xmlからjava configに切り替えようとしています。Java Config複数の設定クラスにある同じアノテーションBean
私たちはコアライブラリを持っており、コアライブラリを使用する実装をしています。各実装にはwebappとcliもあります。私は設定をモジュール化しようとしています。特定のパッケージに対してコンポーネントスキャンを使用しています。私はconfigクラスで循環依存関係の問題に遭遇しています。私は、複数のjava configクラスで作成されたBeanに同じ@Componentを注入する必要があります。私の設定は次の通りです:
@Configuration
@ComponentScan(basePackages = {"my.components"})
@ImportResource({
"classpath:data-access-config.xml"
})
@PropertySource(value = "classpath:core.props", ignoreResourceNotFound = true)
public class CoreAppConfig {
@Autowired
Environment env;
@Autowired
ComponentBean bean;
@Bean
public MyBean myBean() {
return new MyBean(bean);
}
}
@Configuration
@Import({CoreAppConfig.class})
@PropertySource(value = "classpath:my-app.props")
public class MyAppConfig {
@Autowired
Environment env;
@Autowired
ComponentBean bean;
@Bean
public MyBean2 myBean2() {
return new MyBean2(bean);
}
}
@Configuration
@ComponentScan(basePackages = {"my.app.services"})
@Import({MyAppConfig.class, CoreAppConfig.class})
public class MyWebAppConfig {
@Autowired
Environment env;
@Autowired
MyAppConfig myAppConfig;
@Autowired
ComponentBean bean;
@Bean
public MyRestService myRestService() {
return new MyRestService(bean);
}
}
これを解決するにはどうすればよいでしょうか?
1オプションはコンポーネントスキャンを使用しないことです。その他?
編集:私は取得しています
例外はBeanCurrentlyInCreationExceptionです。 @Import({CoreAppConfig.class})またはMyAppConfigから@Autowired ComponentBean Beanを削除すると、問題は解決しません。
EDIT 2:
だから私は、これは特定のBeanとの循環依存関係の問題だと思います。私は他の豆と一緒に私がしたいことをすることができます、この特定の豆だけが私に問題を与えている。
循環依存性を判断する上でのヒントはありますか?
EDIT 3:
いいので、私は犯人を考え出しました。 CoreAppConfigでは、Bean MyPropsBeanを作成します。 MyAppConfigでは、同じMyPropsBeanを作成します。 CoreAppConfig.MyPropsBeanをMyAppConfig.MyPropsBeanで上書きしたいと考えていました。私はこの問題が原因と考えています。CoreAppConfigとMyAppConfig autowire ComponentBeanです。どうすれば解決できますか?どのようなBeanをオーバーライドするための最良の方法は?
正確な問題は何ですか? IDE警告などのエラーを投稿してください。 – GurV
1. **インポート**を削除するとき、あなたの設定はパラレルにロードされ、CoreAppConfigは** MyAppConfig ** - > ** Autowired **に必要な** bean **を作成します。エラー。 2. ** MyAppConfig **で** Autowired **を削除した場合、** bean **の場合は** CoreAppConfig **を参照する必要はありません。 –
@Gurwinder Beanをどのように上書きするのが良いかに関するアイデアはありますか? – rodney757