[SPRING] 구성 요소 검사로 발견 된 Bean을 재정의하는 방법이 있습니까?
SPRING구성 요소 검사로 발견 된 Bean을 재정의하는 방법이 있습니까?
나는 구성 요소 스캔에 의해 fooBean을 직접 제공하고 barBean을 제공하는 java 구성 클래스를 가지고있다.
@Configuration
@ComponentScan(basePackages = { "com.blah" })
public class Config {
@Bean
public FooBean fooBean {
return new FooBean();
}
}
그리고 나는 그것을 테스트 케이스에서 재사용하고 싶다. 그리고 나는 콩을 mock으로 대체 할 필요가있다.
@Configuration
@Import(Config.class)
public class TestConfig {
@Bean
public FooBean fooBean {
return new FooBeanMock();
}
@Bean
public BarBean barBean {
return new BarBeanMock();
}
}
(여기서는 Config를 재사용하는 것이별로 의미가 없지만, 실생활에서 나는 1000 Beans를 가지고 있으며, 단지 몇 가지 조롱 할 필요가 있습니다)
여기서 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
누군가가 컴포넌트 스캔으로 발견 된 bean을 오버라이드하기위한 해결 방법을 알고 있습니까?
빈은 레거시 코드이며 수정할 수 없으며 종속성에 대한 설정자 (개인 속성 + @Resource)가 없다는 것을 고려해야합니다.
해결법
-
==============================
1.불필요한 빈을 건너 뛰십시오.
불필요한 빈을 건너 뛰십시오.
@ComponentScan(basePackages = { "com.blah" }, excludeFilters = @Filter({UnnecessaryBean1.class, UnnecessaryBean2.class}))
-
==============================
2.예, 구성 요소 검사로 발견 된 Bean을 대체 할 수 있습니다. 나는 이것을 테스트 케이스에서한다. XML 구성을 사용하지만 자바 구성이 매우 비슷하다고 생각합니다.
예, 구성 요소 검사로 발견 된 Bean을 대체 할 수 있습니다. 나는 이것을 테스트 케이스에서한다. XML 구성을 사용하지만 자바 구성이 매우 비슷하다고 생각합니다.
spring.xml :
<context:component-scan base-package="cz.backend"/>
MyBeanImpl.java
@Component("myBean") public class MyBeanImpl implements MyBean { //Something }
테스트 폴더에서 나는 :
spring-test.xml :
<import resource="classpath:/spring.xml"/> <bean id="myBean" class="cz.backend.MyBeanTestMock"/>
MyBeanTestMock.java:
public class MyBeanTestMock implements MyBean { //Something }
대체 bean의 이름은 동일해야합니다.
from https://stackoverflow.com/questions/15972824/is-there-any-way-to-override-a-bean-discovered-by-component-scan by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 서버 응답에 파일 객체를 쓰고 서버에 파일을 저장하지 않고 어떻게 작성합니까? (0) | 2019.04.30 |
---|---|
[SPRING] 최대 절전 모드 엔티티 저장시 일시적인 패턴 무시 (0) | 2019.04.30 |
[SPRING] ArrayList를 org.springframework.batch.core.JobParameter에 캐스트 할 수 없습니다. (0) | 2019.04.30 |
[SPRING] 다중 IDP를위한 스프링 SAML 확장 (0) | 2019.04.30 |
[SPRING] Stateless 웹 애플리케이션 개발을 위해 Spring MVC 사용 (0) | 2019.04.30 |