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