Spring boot自动注入对象为null的问题
首先这问题可能的情况很多,这里不再赘述一些常见的错误。
长不看的省流:构造函数里不要调用自动注入的对象
这次遇到的情况是service里面注入mapper,然后一直是null值——剧透一下,问题就在于是在构造函数里面调用了mapper。如果看到这里知道为什么会null,那下面的大佬就不用看了(x)
开始以为是bean的创建顺序问题,去搜了@Order
等一系列东西,觉得指定mapper先于service完成创建就可以正常注入了,但是都没有解决。
最后通过 mapper上@Repository
指定名称,再@DependsOn
指定mapper,成功的在调试中看到了mapper的构造方法先于service的调用,但是仍然不能成功注入——为什么这里不说完成注入,而是说构造方法的调用顺序,或者说是对象的创建顺序呢?这就是问题的所在了
可以先去看一下这篇文章
SpringBoot学习之@PostConstruct、@Autowired与构造函数的执⾏顺序
百度文库的,相当垃圾,不过我们记住他开头的结论就够好了:
执行顺序是:构造函数 => @Autowired => @PostConstruct
而我这里的调用情况是
这就很显然了,构造函数里面的时候调用mapper的时候,字段的值还没有开始注入呢,那自然是null了
所以解决办法:把你希望用构造函数执行的功能提出去一个void方法,变成用@PostConstruct
来执行(我记得好像这玩意要public void来着,但是这里private也能用……回头再说.jpg)
这样一来, 就可以成功看到注入的东西了
(然后发现我redis被之前寄掉的硬盘带走了,还得重装一下,而现在已经半夜3:50了呜呜呜呜呜呜。先睡觉,这个问题搞了俩小时,就到这里解决了)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhiege
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13