儘管使用spring boot和maven將我們的項目模塊化爲不同的獨立maven項目,但我們遇到了一個問題,那就是多模塊maven項目中的bean自動裝配不起作用。Spring Boot在maven多模塊項目中,自動裝配bean不起作用
只給你這個問題的概述,下面是迄今爲止開發獨立的Maven項目
- Coreservices - 包含整個應用程序的春天啓動域對象:輸出JAR
- DBservices1 - 包含彈簧啓動存儲庫和服務(數據庫服務)來訪問數據庫:輸出JAR
- 獎勵 - 包含獎勵模塊相關的文件(控制器,服務(業務邏輯服務),查看):輸出JAR
- RewardsApp-獨立DEPL oyable Maven項目:輸出WAR
下面是依賴結構 RewardsApp->獎勵 - > DBservices1 - > Coreservices
的問題是獎勵和DBservices1用於獲取映射服務@Autowired
註解與@Service
/@Repository
不適用於RewardsApp
項目。
作爲解決方法,我們已經使用@Bean
註釋配置了RewardsApp
中的bean,然後這些服務可供服務器成功啓動。 通過這種方法,我們需要手動配置依賴項目中使用的RewardsApp
中的所有bean。 我們的應用程序中有許多服務和存儲庫,我們認爲創建這樣的bean並不是一個正確的方法,因爲需要創建許多bean。
請注意,我們已經創造下 包com.company.application
下面所有的春天啓動控制器,服務,repositorys在所有項目的主類的片段:
@SpringBootApplication
@ComponentScan(basePackages = {"com.company.application"})
public class RewardsApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(RewardsApp.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(RewardsApp.class);
}
}
/**
*Manual beans in RewardsApp
**/
@Bean
public SomeService someService()
{
return new SomeService();
}
com.company.application'包中是否還有'RewardsApp'?如果沒有放在那裏或'com.company'包中,並刪除'@ ComponentScan'(這已經被@ ComponentScan所隱含)。 –