2017-12-07 4 views
0

스프링 웍과 스프링 웹을 섞은 프로젝트가 있습니다. 기본적으로 작업을 실행하는 Spring Batch 프로젝트이지만 거기에는 몇 개의 REST 끝점이 있고 Spring Batch Admin Manager 모듈도 있습니다. 기본 프로젝트에는 자체 (기본) 응용 프로그램 컨텍스트가 있지만 POM에 포함 된 Admin Manager 프로젝트는 효과적으로 자체 컨텍스트를 만듭니다.Spring의 특정 컨텍스트에서 bean을 어떻게 제외 할 수 있습니까?

내 수업 중 하나는 @RestController이며 두 문맥에 의해 자동으로 인스턴스화됩니다. 이 콘트롤러는 @Autowired 의존 관계를 가지고 있는데, 첫 콘텍스트가 모두 발견되어서 실행될 때 괜찮습니다. 그러나 두 번째 컨텍스트가 실행되면 해당 종속성을 찾지 못하고 응용 프로그램이 제대로 시작되지 않습니다.

하지만이 두 번째 컨텍스트는 앞서 설명한 Sping Batch Admin Manager 프로젝트에서 자동으로 만들어 지므로 실제로 제어 할 수는 없습니다. 내 @RestController에서 수동으로 지정할 수있는 방법이 내 기본 컨텍스트 이외의 모든 항목에서 제외되어야합니까?

답변

1

@ 옥션 annotations 중 하나를 사용할 수 있습니다.

예. @ConditionalOnClass 또는 @ConditionalOnMissingClass 또는 @ConditionalOnBean 또는 @ConditionalOnMissingBean

그래서 컨트롤러는 읽기

엔드 포인트를 실행하는 데 필요한 클래스/콩이 있는지 여부를 확인 더 here