2017-05-23 1 views
0

@Configuration 주석이 달린 AppConfig 클래스에는 애플리케이션에서 타사 히트를 수행하는 Bean을 포함하는 다양한 Bean 정의가 있습니다. 이제 스프링 통합 테스트 케이스에서이 콩을 초기화하지 않기를 바란다. 거기서 나는 @Configuration으로 주석이 붙은 TestAppConfig라는 이름으로 또 다른 bean을 만들었습니다. 제 3 자 히트를 수행하는 모든 bean을 조롱했습니다. 이제는 내 testContext.xml에서 제외 필터를 컨텍스트에 추가하고 있습니다 : component-scan 어디에서 제외 할 AppConfig 패키지를 지정하고 있습니까? 하지만 어떻게 든이 AppConfig는 매번 초기화되고 있습니다. 나는 적절한 정규식을 시도했지만 여전히 일들이 작동하지 않습니다. 누구든지 그 원인을 알고 있다면 공유하십시오. 당신은 스프링 3.2 사용 설명을 참조하면testContext.xml에서 @Configuration 클래스를 component-scan에서 제외하는 방법

+1

사용'Profile' @ 또는 호출됩니다'Conditional' – pvpkiran

+0

@ 불행하게도 나는 봄 3.2.16 –

+0

을 사용하고 있기 때문에 @Conditional를 사용하여 설정을 표시하고 응용 프로그램을 시작하는 방법 수 없습니다. – StanislavL

답변

2

, 당신은 당신이 @Bean이 작성 될 결정 @profile 주석을 사용할 수 있습니다

@profile 사용하는 스프링의 이전 버전에 대한 here를 볼 수 있습니다 아닙니다.

예 :

정의 콩은 "개발"

  1. prodDataSource가 호출되지 않습니다 spring.profiles.active=development app.properties에서라는 프로필

    @Bean 
    @Profile("production") 
        public DataSource prodDataSource() { 
         ... 
         return dataSource; 
        } 
    
    @Bean 
    @Profile("development") 
        public DataSource devDataSource() { 
         ... 
         return dataSource; 
        } 
    

    이하 에드. 그러나 devDataSource

    1. prodDataSource가 호출되지 않습니다 app.properties spring.profiles.active=production
    2. 에서 "생산"이라는 프로필

    호출됩니다. 그러나 devDataSource

+0

@profile을 사용하면 저에게 효과적입니다. 여기에 내가 어떻게 내 문제를 해결했다. @profile ("test")을 사용하여 testAppConfig에 주석을 달고 각 테스트 인프라 설정에 @activeProfiles ("test")가 추가되었습니다. 내 AppConfig에 @profile ("! test") 주석을 달았다. 이 방법은 내 애플 리케이션 부팅, 심지어 내가 어떤 프로필을 명시 적으로 전달하지 않았을 경우, 그것은 단지 현재의 프로파일이 테스트가 아니므로 구성을 선택했는지 확인합니다. –

관련 문제