2016-06-15 2 views
0

두 개의 서비스가있는 웹 애플리케이션 (webapp1)이 있는데 각 서비스는 인터페이스를 상속받습니다. 각 서비스에는 ID가 @SERVICE 인 주석이 있습니다. (service1 및 service2). 은 wervice1에 대한 예를 들어, 내가이있어 :Spring Mvc, Bean을 오버라이드 (override)하는 방법 annotation

@SERVICE("service1") 

각 서비스는 @AUTOWIRED@QUALIFIER 주석을 사용하여 컨트롤러에 주입한다. 이제 webapp1에 오버레이로 만든 두 번째 웹 응용 프로그램 (webapp2)이 생겼습니다. webapp2에서 service1을 덮어 쓰려고합니다. 나는이 작업을 수행하려고 : 내가 동일한 ID (서비스 1과 wervice 재정의 서비스 1) 두 개의 콩을 가지고 있기 때문에 오류가있어

@PRIMARY 
@SERVICE("service1") 

.

오류 메시지는 다음과 같습니다 org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'service1' for bean class [fr.yyy.oav.xxx.service.YyyService1] conflicts with existing, non-compatible bean definition of same name and class [fr.harvest.oav.xxx.service.XxxService1]

나는 봄이 클래스를 사용하는 것이 금지 될 대신 ID의 이름을 사용할 수 있도록 허용 주석 @Bean을 사용했습니다.

xml 정의를 사용하지 않고 service1을 재정의 할 수있는 방법이 있습니까?

감사

지정한 빈 태그 .Hope에 autowire="bytype"를 사용하는
+1

전체 오류 메시지를 표시 할 수 있습니까? –

+0

유형별로 빈을 autowire (해결)하십시오. 그러므로 당신은 이드가 필요 없습니다. – naXa

답변

0

시도 서비스 1와 서비스 2가 (모두 같은 웹 애플리케이션에서) 그들이 그렇게 동일한 인터페이스를 구현하므로이

0

내가 그것을 사용할 수 없습니다 작동합니다 둘 다 인터페이스 유형을 사용하여 주입됩니다. 그것은 id를 한정자에 사용하여 구별하는 이유입니다.

관련 문제