課程
/后端開發
/Java
/Spring入門篇
為什么注入是null呢
2018-10-23
源自:Spring入門篇 2-1
正在回答
使用junit測試時,先通過反射生成一個測試類對象。這個對象實例化之后,也就是jvm為他分配內存,他包含的oneinterface也分配好相應的內存大小,但是沒有賦值,也就是null,因為這個時候還沒有加載spring*.xml文件,無法解析@Resource標簽。之后調用其構造函數,就像你的例子里面,這個時候才去為配置文件賦值為spring*.xml。通過測試類對象執行測試方法的時候先執行before,這個時候測試類對象被用,因為線程安全,加載spring*.xml文件并正確掃描到了測試類,但是無法為測試類對象注入,因為這塊內存的讀取是線程安全的,所以oneinterface還是null。個人理解
問題解決了嗎,mark一下
慕田峪5532335 提問者
舉報
為您帶來IOC和AOP的基本概念及用法,為后續高級課程學習打下基礎
3 回答注解測試報錯的問題
2 回答注解里的applicationContext是啥
3 回答里面用到到是注解注入jdbc的配置信息,config.property,注解都有classpath:了,為什么xml中還有在引入config.property呢
2 回答設值注入的問題
2 回答設值注入問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-11-29
使用junit測試時,先通過反射生成一個測試類對象。這個對象實例化之后,也就是jvm為他分配內存,他包含的oneinterface也分配好相應的內存大小,但是沒有賦值,也就是null,因為這個時候還沒有加載spring*.xml文件,無法解析@Resource標簽。之后調用其構造函數,就像你的例子里面,這個時候才去為配置文件賦值為spring*.xml。通過測試類對象執行測試方法的時候先執行before,這個時候測試類對象被用,因為線程安全,加載spring*.xml文件并正確掃描到了測試類,但是無法為測試類對象注入,因為這塊內存的讀取是線程安全的,所以oneinterface還是null。個人理解
2018-10-23
問題解決了嗎,mark一下