2012-06-13 16 views
6

Ho un'applicazione con 2 bean con il nome samen ma in pacchetti diversi. La mia applicazione di primavera fallisce perché non può decidere quale fagiolo prendere. C'è qualche soluzione per questo? I fagioli al momento non implementano interfacce specifiche ..2 fagioli con lo stesso pacchetto ma diverso, come autowire?

Vedi sotto un esempio modificato dell'eccezione:

Causato da: org.springframework.context.annotation.ConflictingBeanDefinitionException: nome del bean Annotazione specificato ' dataTransferHandler' per classe bean [aaaaa.ws.handler.DataTransferHandler] è in conflitto con, definizione di fagioli non compatibile esistente con lo stesso nome e la classe [bbbbb.ws.handler.DataTransferHandler]

+0

Sembra che l'unica soluzione sia rappresentarli con il loro nome esatto. – nhahtdh

risposta

12

Dovrai assegnare nomi diversi ai tuoi bean: se più bean sono definiti con lo stesso nome, quello definito successivamente sostituirà quello definito in precedenza, quindi nel tuo caso esisterà un solo bean con il nome di dataTransferHandler.

si può dare queste due chicchi di nomi diversi, in modo che entrambi possano esistere e si può iniettare in quella corretta sia usando: @AutoWired @Qualifier("dataTransferHandler") O @Resource(name="dataTransferHandler")

+0

Dando ai fagioli nomi diversi intendi cambiare il nome della classe? – Marco

+0

No, il nome del bean - se lo hai esplicitamente denominato '', o se stai usando le annotazioni '@Service (" aName ")'. Sembra che nel tuo caso i due fagioli abbiano lo stesso nome, sono di diverso tipo in entrambi i casi –

+0

Perfetto !!! Grazie risolto i miei problemi !!! Grazie mille per l'aiuto! – Marco

0

Si può dare attributo primario = "true" per la definizione del bean si desidera avere la preferenza quando è autorizzata. Ma i nomi dei bean devono essere diversi. Non esiste una soluzione per lo stesso nome di bean.

In fase di esecuzione quando si otterrà la classe autowired, il bean vero primario otterrà la preferenza per l'autowiring. Spero che questo ti aiuti. Saluti.

Problemi correlati