-
問題:當一個類被 @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對象空指針異常
解決方式和上面說的是一樣
另外參考這個解決方案