1. 程式人生 > 實用技巧 >基於SpringBoot多模組專案引入其他模組時@Autowired無法注入的問題

基於SpringBoot多模組專案引入其他模組時@Autowired無法注入的問題

1.1 Bug場景:

1.1 啟動Spring Boot專案時報 NoSuchBeanDefinitionExpetion 沒有找到bean的例項,即spring沒有例項化物件,也就無法根據配置檔案執行依賴注入依賴錯誤

2.1 Bug原因:

假設模組A需要引入模組B的依賴,並且需要注入模組B中的TestService物件。

第一步,需要在A的pom檔案中引入B模組的依賴:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>module-b</artifactId>
    <version>1.0</version>
</dependency>

第二步:在A中的測試類中注入B的TestService物件:

@Autowired
private TestService testService;

第三步:並且呼叫 TestService 的方法:

testService.test();

測試程式碼提示會報錯:

在pom檔案中引入需要模組的依賴後,在啟動類掃描時掃描不到該依賴。這是因為模組A的@SpringBootApplication註解預設掃描範圍為A的啟動類所在的包(com.example.modulea)及其子包,所以此時模組A並沒有掃描到模組B的包,那麼自然無法在模組A中注入模組B的Service類。

3.1 解決方法:

1. 如果兩個模組的包路徑相同,只需要擴大包掃描範圍

2. 如果兩個模組的包路徑不相同,加入引入依賴的包