基於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. 如果兩個模塊的包路徑不相同,加入引入依賴的包

 


免責聲明!

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



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