SpringブートとMavenを使用してプロジェクトを別々の独立したMavenプロジェクトにモジュール化している間に、マルチモジュールMavenプロジェクトでBeanの自動配線が機能しないという問題が発生しました。以下SpringブートMavenマルチモジュールプロジェクトでBeanのオートワイヤリングが動作しない
ただ、あなたの問題の概要を提供するためには、これまで
- CoreServicesにを開発し、独立したMavenプロジェクトです - アプリケーション全体の春ブーツ・ドメイン・オブジェクトが含まれています:出力JAR
- は春ブーツをDBservices1が含まれていデータベースにアクセスするためのリポジトリおよびサービス(データベースサービス):出力JAR
- 報酬 - 報酬モジュール関連ファイル(コントローラ、サービス(ビジネスロジックサービス)、ビュー)を含む:出力JAR
- RewardsApp-独立デプールoyable Mavenプロジェクト:出力WAR以下
は RewardsApp->報酬依存構造である - > DBservices1 - > CoreServicesに
問題がマッピングされたサービスを取得するために報酬とDBservices1で使用@Autowired
注釈は
@Service
でアノテートされ
/@Repository
はRewardsApp
プロジェクトにありません。
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();
}
あなたの 'RewardsApp'は' com.company.application'パッケージにもありますか?それを 'com.company'パッケージに入れておかないと' @ ComponentScan'(これは既に '@ ComponentScan'によって暗示されています)を削除します。 –