xml에서 java config로 전환하려고합니다.여러 Config 클래스의 Java 구성과 동일한 주석 bean
우리는 코어 라이브러리를 가지고 있으며 코어 라이브러리를 사용하는 구현체를 가지고 있습니다. 또한 각 구현에는 webapp 및 cli가 있습니다. 구성을 모듈화하려고합니다. 특정 패키지에 대해 구성 요소 검색을 사용합니다. config 클래스에서 순환 종속성 문제가 발생했습니다. 여러 Java 구성 클래스로 작성된 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을 제거하면 문제가 사라집니다.
편집 2 :
그래서 나는이 특정 콩 순환 종속성 문제라고 생각합니다. 나는 다른 콩들과 내가 원하는 것을 할 수있다.이 콩만이 나에게 문제를주고있다.순환 종속성을 결정하는 데 유용한 정보가 있습니까?
편집 3 :
괜찮 그래서 범인을 알아 냈어요. CoreAppConfig에서 Bean MyPropsBean을 만듭니다. 그런 다음 MyAppConfig에서 동일한 MyPropsBean을 만듭니다. CoreAppConfig.MyPropsBean을 MyAppConfig.MyPropsBean으로 대체하려고합니다. 이 문제는 모두 CoreAppConfig 및 MyAppConfigComponentBean의 두 가지로 인해 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 콩을 무시하는 가장 좋은 방법은 무엇입니까?
정확한 문제는 무엇입니까? IDE 경고와 같은 오류를 게시 할 수 있습니까? – GurV
1. ** 가져 오기 **를 제거하면 구성이 병렬로로드되고 CoreAppConfig가 ** MyAppConfig ** -> ** Autowired **에 필요한 ** bean **을 생성하므로 얻을 수 없습니다. 오류. 2. ** MyAppConfig **에서 ** Autowired **를 제거하면 ** bean **에 대해 ** CoreAppConfig **와 같은 다른 설정을 볼 필요가 없습니다. –
@ Gwwinder 빈을 재정의하는 최선의 방법에 대한 아이디어가 있습니까? – rodney757