當前位置:編程學習大全網 - 網站源碼 - SpringBoot 中@Autowired 註入失效原因及解決方法

SpringBoot 中@Autowired 註入失效原因及解決方法

通過@Autowired註入的類所在的包路徑不在Application啟動類所在的包/子包路徑下。

Spring Boot項目的Bean裝配 默認規則 是根據Application類(指項目入口類)所在的包位置從上往下掃描。

eg: Application啟動類 在包com.alibaba.taobao下,則只會掃描 com.alibaba.taobao 包及其所有子包,如果需要自動裝載的類所在包不在 com.alibaba.taobao 及其子包下,而是在 com.alibaba.tmall 下,則不會被掃描,自然就沒法被註入!

若類A中包含成員屬性B, B是通過@Autowired自動註入,而類 A的實例 是通過 new的方式 產生,則自動註入會失效的。

在啟動類中定義分別掃描兩個包 ,即在@SpringBootApplication註解的類中添加:

@ComponentScan({"com.alibaba.taobao","com.alibaba.tmall"})

@ComponentScan({"com.alibaba"})

定義壹個SpringUtil類

然後在類A中通過如下調用獲取Spring容器中的B實例

ClassBInterface b = (ClassBInterfaceImpl) SpringUtil.getBean("classBInterfaceImpl");

  • 上一篇:惠州禦湖1公裏小區周邊配套怎麽樣?
  • 下一篇:源代碼中的 CAOC-N 是什麽意思?
  • copyright 2024編程學習大全網