2016-06-15 4 views
0

У меня есть веб-приложение (webapp1) с двумя службами, каждая служба наследуется от интерфейса. У каждой службы есть аннотация @SERVICE с идентификатором. (service1 и service2). Например, для wervice1, я получил:Spring Mvc, как переопределить определение бобов по аннотации

@SERVICE("service1") 

Каждая услуга вводится в контроллер с помощью @AUTOWIRED и @QUALIFIER аннотацию. Теперь у меня есть второе веб-приложение (webapp2), которое создается наложением на webapp1. В webapp2 я хочу переопределить service1. Я пытаюсь сделать это:

@PRIMARY 
@SERVICE("service1") 

Я получил сообщение об ошибке, потому что у меня есть два зерна с одинаковым идентификатором (service1 и wervice которые замещают 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]

Я пытался использовать аннотацию @Bean, который позволяет использовать имена вместо идентификатора весна запрещает использовать его по классу.

Есть ли способ переопределить service1 без использования определения xml?

благодаря

+1

Не могли бы вы показать полное сообщение об ошибке? –

+0

Попытайтесь использовать autowire (resolve) beans по типу; поэтому вам не понадобится идентификатор. – naXa

ответ

0

Попробуйте использовать autowire="bytype" в указанный вами боба тег .HOpe это будет работать

0

я не могу использовать его, потому что service1 и service2 (оба в одной и той же веб-приложение) реализует тот же интерфейс, поэтому они оба вводятся с использованием типа интерфейса. Именно поэтому я использую id на квалификаторе, чтобы отличить их.

Смежные вопросы