在Spring管理下的類中使用new對象帶來的問題


  • 問題:當一個類被 @Component 注解修飾,或者在 applicationContext 配置文件中使用了 <bean> 標簽配置,將其交給 Spring 容器進行管理后,如果在該類的屬性或方法中new了對象,這個類將不能再被其他類使用 @Autowired 自動注入,會報空指針異常。

  • 解決方法:雖然 Spring 管理下的類中依舊可以使用 new 的方式生成對象,但是不推薦這么做,這樣做了之后,該類只能通過手動調用 ClassPathXmlApplicationContext 類的 getBean 方法獲取實例對象。建議一個類中使用的所有對象應該事先在 Spring 配置文件中定義好, 或者使用注解的方式統一交給 Spring 容器進行管理,使用的時候直接使用 @Autowired 獲取實例對象即可。

參考地址:

https://www.cnblogs.com/soundofcolors/p/11096621.html

但實際上,我的問題還不太一樣,稍微有些差別

我的問題是:當一個類TESTA使用@Component 注解修飾,或者在 applicationContext 配置文件中使用了 <bean> 標簽配置,將其交給 Spring 容器進行管理后,該類內部使用@Autowired注入了另外一個對象TESTB(使用@Bean注解的方式注入),正常使用TESTA類的時候,使用@Autowired注入,模式為單例,但是在另外一個地方new 了 TESTA類,結果原來使用@Autowired注入的TESTA類的地方,調用A類中的TESTB對象的時候,報TESTB對象空指針異常

解決方式和上面說的是一樣

另外參考這個解決方案

解決SpringBoot中自己new出來的對象不能自動注入對象和屬性的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM