国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

解決springboot遇到autowire注入為null的問題

瀏覽:3日期:2023-03-23 09:45:58

這個問題困擾了很久,有些類不是controller在使用autowired注入的類顯示為空,找到網上的方法是在類初始化時主動注入被Autowired的類,如下圖

解決springboot遇到autowire注入為null的問題

這樣的方法是可行的,最后引用時使用上圖中doubleTeachSendMsg.doubleTeachService.sendMsg();方法即可,但是使用起來未免太麻煩,而且也不是spring依賴注入的原則,這個出現原因其實就是此類是在bean加載之前被調用,或者springboot在加載時沒有識別到此類,所以注入為空,要想使此類被識別到,那么就要在啟動時被spring識別到,需要將其變為bean對象并被識別到。如下圖

解決springboot遇到autowire注入為null的問題

springboot啟動會掃描configuration,正常添加信息在最下面的是new MyWebSocketHandler(),在此處使用spring的依賴注入,使spring識別到此類,這樣,添加的autowired方法就不會是null了,并且也不需要在添加 這種方式了

解決springboot遇到autowire注入為null的問題

補充:關于springboot使用@Autowired注解向非controller類中注入bean為null的問題

這種問題一般分為2種情況

第一種情況:

如果你要在java A類中 使用@Autowired注入java B類,如果注入不了的話,通過添加以下三個關鍵的地方,可以解決該問題:

關于@PostConstruct:被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器調用一次,類似于Serclet的inti()方法。

被@PostConstruct修飾的方法會在構造函數之后,init()方法之前運行

@Componentpublic class A{ @Autowired public B b; public static A a; @PostConstruct //通過@PostConstruct實現初始化bean之前進行的操作 public void init() { a= this; a.b= this.b; }有三個地方需要注意一下(敲黑板!):

1.@Component

2.public static A a; 注意這個為 public 不然沒有權限

3.@PostConstruct public void init() {}

第二種情況:

你要被注入的類繼承了thread類,這樣的話你通過上面的方法來做的,仍然注入不進去,原因是因為spring的非線程安全問題,不讓你注入,注入的結果是null

解決辦法寫一個構造函數或者set和get方法把你要注入的service傳進來就好

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Spring
相關文章:
主站蜘蛛池模板: 免费在线观看毛片 | 国产欧美日韩高清专区手机版 | 自拍 亚洲 欧美 | 国产精品福利社 | 美国的毛片免费的 | 中文字幕三区 | 欧美a在线 | 99国产欧美久久精品 | 韩国毛片 免费 | 欧美黄色特级视频 | 亚洲综合天堂网 | 国产亚洲精品国产 | 精品手机在线视频 | a级网站在线观看 | 国产精品女上位在线观看 | 俄罗斯小屁孩cao大人免费 | 国产精品一国产精品 | 亚洲精品网址 | 国产毛片基地 | 日本一级aaaa特黄毛片 | 图片区偷拍区小说区 | 亚洲国产精久久久久久久 | 国产99久久久久久免费看 | 欧美久久久久久 | 国产r67194吃奶视频 | 欧美日韩免费播放一区二区 | 久久精品国产线看观看亚洲 | 页面升级亚洲 | 色屁屁一区二区三区视频国产 | 日韩在线中文字幕 | 欧美一级专区免费大片野外交 | 亚洲精品一区二区观看 | 日本高清色www | 亚洲精品一区二区三区四区手机版 | 久久亚洲综合中文字幕 | 一级毛片不卡免费看老司机 | 国产自一区 | 国产欧美一区视频在线观看 | 欧美怡红院免费的视频 | 午夜三级理论在线观看视频 | 久久手机精品视频 |