2012-06-13 7 views
6

Mam aplikacji, która ma 2 fasoli z nazwą samen, ale są w różnych pakietach. Moja aplikacja wiosenna nie działa, ponieważ nie może zdecydować, którą z nich wybrać. Czy istnieje jakieś rozwiązanie? Ziarna nie obecnie wdrożyć konkretne interfejsy ..2 fasolki z tym samym, ale innym pakietem, jak autowire?

Patrz niżej na edytowanej przykład wyjątku:

spowodowane: org.springframework.context.annotation.ConflictingBeanDefinitionException: Adnotacja dokładną nazwą fasoli " dataTransferHandler”dla klasy fasoli [aaaaa.ws.handler.DataTransferHandler] konflikty z istniejącymi, niezgodnym definicji fasoli z tej samej nazwie i klasie [bbbbb.ws.handler.DataTransferHandler]

+0

Wygląda na to, że jedynym rozwiązaniem jest odesłanie ich według ich dokładnej nazwy. – nhahtdh

Odpowiedz

12

Będziesz musiał nadać swojej fasoli różne nazwy - jeśli wiele fasoli zostanie zdefiniowanych z tą samą nazwą, to zdefiniowana później zastąpi zdefiniowaną wcześniej - tak więc w twoim przypadku będzie istniała tylko jedna fasola o nazwie dataTransferHandler.

Można dać te dwa fasola różne nazwy, tak że oba mogą istnieć i można wstrzyknąć w odpowiednim jednym albo za pomocą: @AutoWired @Qualifier("dataTransferHandler") LUB @Resource(name="dataTransferHandler")

+0

Poprzez nadanie fasolom różnych imion masz na myśli zmianę nazwy klasy? – Marco

+0

Nie, nazwa komponentu bean - jeśli nazwa została jawnie nadana "" lub jeśli używasz adnotacji '@Service (" aName ")'. Wygląda na to, że w twoim przypadku dwie fasolki mają tę samą nazwę, są różnymi typami, tak czy inaczej, dobrze –

+0

Perfect !!! Dzięki, rozwiązałem moje problemy !!! Wielkie dzięki za pomoc! – Marco

0

Można nadać atrybut podstawowy = „true” do zdefiniowania fasoli chcesz mieć preferencje podczas autowyrowania. Ale nazwy ziaren muszą być różne. Nie ma rozwiązania dla tej samej nazwy komponentu.

W czasie wykonywania, gdy otrzymasz klasę autowired, pierwotny prawdziwy komponent bean będzie miał pierwszeństwo do automatycznego tworzenia. Mam nadzieję, że to ci pomoże. Twoje zdrowie.

Powiązane problemy