最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于spring注入為null的原因及解決方案

 更新時間:2021年08月28日 09:35:35   作者:CMM1  
這篇文章主要介紹了spring注入為null的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

spring注入為null

解決方法用到@PostConstruct注解,平常沒接觸過,寫博客記錄一下。

場景

在使用Aviator時需要自定義函數(shù),但是在使用自定函數(shù)的時候發(fā)現(xiàn)@Resource注入的類是null,使用的框架是springboot所以沒什么好配置的,在網(wǎng)上找了下原因,找到其中一個“在spring中如果使用new創(chuàng)建一個對象時,這個對象將不在受spring管理器管理”的博客,所以檢查了下自己是否使用new方式管理bean。

經(jīng)檢查找出原因

在這里插入圖片描述

在項目啟動時我用了靜態(tài)塊用new方式管理了bean。

但是使用靜態(tài)塊必須使用靜態(tài)變量,而spring無法注入靜態(tài)變量(有方法可以實現(xiàn),但是比較麻煩)。

解決方法

將靜態(tài)塊改造成方法,并且使用注入方式傳入對象,然后使用@PostConstruct注解,在將在依賴注入完成后,自動執(zhí)行被注解的方法,這樣就達到了啟動項目注冊函數(shù)的效果。

在這里插入圖片描述

@PostConstruct:

被@PostConstruct修飾的方法會在服務(wù)器加載Servlet的時候運行,并且只會被服務(wù)器執(zhí)行一次。PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行。

Spring注入的屬性為null可能的情況

Spring注入的屬性為null可能的情況,使用注解方式。

保證Bean能夠交付給Spring容器

1、你的組件上面是否加入了合適的注解。例如:@Service, @Component等。

2、檢查一下你context-scan掃描器配置的路徑是否正確。(SpringBoot檢查一下你的包是否和主入口程序在一個目錄下,并且檢@ComponentScan配置的路徑是否正確)

檢查實例化的方式

1、很低級問題,但是一不注意就犯了。檢查是不是new了一個對象,這樣的話就繞過了容器的依賴注入過程,也可能出現(xiàn)獲取不到應(yīng)有的屬性這種情況。

說明:Spring是一個bean的容器,由容器負責(zé)對象的初始化和依賴注入。當(dāng)我們想要從中獲取一個Bean的實例時,就從Spring容器中獲取。

檢查注入的位置

1、把@Autowired注解加在了一個靜態(tài)屬性上,注入為空。

說明:Spring幫我們做屬性的自動注入,是在幫助我們實例化Bean之后完成的。而static修飾該屬性是歸屬于類而不是實例的。當(dāng)Spring我們想給static屬性注入值的時候,對象還沒創(chuàng)建,這種情況一定會出現(xiàn)注入為空的情況。

2、在應(yīng)用的Filter或Listener中使用了@Autowired ,注入為空web容器啟動是按照一定順序的,即:Listener --> Filter -->Servlet。

因為Filter和Listener加載順序優(yōu)先于spring容器初始化實例,所以會出現(xiàn)null。Spring的入口就在Servlet里??梢杂肁pplicationContext根據(jù)bean名稱(注意名稱為實現(xiàn)類而不是接口)去獲取bean

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

观塘区| 长泰县| 原阳县| 灌南县| 内黄县| 广丰县| 镇赉县| 呼伦贝尔市| 南部县| 郸城县| 右玉县| 包头市| 张掖市| 宣威市| 密山市| 吴忠市| 乌恰县| 永城市| 佛教| 盈江县| 临武县| 富锦市| 蒲江县| 新巴尔虎右旗| 紫云| 台江县| 呼和浩特市| 阿坝县| 阳谷县| 綦江县| 广州市| 华池县| 麦盖提县| 公主岭市| 沙洋县| 洛隆县| 巴塘县| 宁远县| 萝北县| 衡水市| 石河子市|