필자는 fooBean을 직접 제공하고 컴포넌트 스캔을 통해 barBean을 제공하는 java 구성 클래스를 보유하고 있습니다.구성 요소 검사로 발견 된 Bean을 재정의하는 방법이 있습니까?
@Configuration
@ComponentScan(basePackages = { "com.blah" })
public class Config {
@Bean
public FooBean fooBean {
return new FooBean();
}
}
와 나는 시험의 경우 재사용 할 그리고 난 모의 객체와 콩을 교체해야합니다 : 그것은 많은 의미가 구성을 재사용하지 않습니다
@Configuration
@Import(Config.class)
public class TestConfig {
@Bean
public FooBean fooBean {
return new FooBeanMock();
}
@Bean
public BarBean barBean {
return new BarBeanMock();
}
}
을 (여기지만, 현실에서 나는 1000 개의 빈을 가지고 있으며, 단지 몇 가지 조롱 할 필요가있다.)
여기서 fooBean은 오버라이드되지만 barBean은 오버라이드되지 않는다.
Skipping loading bean definition for %s: a definition for bean " + "'%s' already exists. This is likely due to an override in XML.
이 공식 문제도있다 : https://jira.springsource.org/browse/SPR-9682
누군가가 구성 요소 검사에 의해 발견 된 빈을 재정의 할 수있는 해결 방법을 알고 있습니까?
빈은 레거시 코드이며 수정할 수 없으며 종속성에 대한 설정자가 없습니다 (개인 속성 + @Resource).
주 설정에서 건너 뛸 수 없습니다. 왜냐하면 나는 빈을 필요로하고 그 빈을 그렇지 않으면 인스턴스화 할 수있는 가능성을 보지 못하기 때문이다. "빈은 레거시 코드이고 수정 될 수 없으며 의존성에 대한 설정자 (개인 속성 + @Resource)가 없다. ". 기본 설정을 가져 오는 테스트 설정에서 가져온 기본 설정의 검색 결과가 아무렇게나 실행되기 때문에 아무런 의미가 없습니다. – mmoossen
기본 구성을 두 부분으로 나눌 수 있습니다. 1) 구성 요소 검사 2) 그 밖의 모든 부분. 그런 다음 테스트 구성에서 두 번째 파일 만 가져옵니다. 따라서 테스트를 위해 구성 요소 스캔 설정을 무시할 수 있습니다. –
으로 만들 수 있습니다. 아이디어를 가져 주셔서 감사합니다. 나는 그것을 시도 할 것이다. – mmoossen