2012-06-13 29 views
6

Tengo una aplicación que tiene 2 beans con el nombre de samen pero están en diferentes paquetes. Mi aplicación de primavera falla porque no puede decidir qué bean tomar. ¿Hay alguna solución para esto? Los granos actualmente no implementan interfaces específicas ..2 frijoles con el mismo pero diferente paquete, ¿cómo conectarlos automáticamente?

Véase a continuación presenta un ejemplo de la excepción:

Causado por: org.springframework.context.annotation.ConflictingBeanDefinitionException: anotación especificado nombre del bean ' dataTransferHandler' para la clase de bean [aaaaa.ws.handler.DataTransferHandler] entra en conflicto con, definición de frijol no compatible existente del mismo nombre y la clase [bbbbb.ws.handler.DataTransferHandler]

+0

Parece que la única solución es referirlos por su nombre exacto. – nhahtdh

Respuesta

12

Tendrá que dar diferentes nombres a sus granos: si se definen varios beans con el mismo nombre, el que se define más adelante anulará el definido anteriormente, por lo que en su caso solo existirá un bean con el nombre dataTransferHandler.

le puede dar estos dos granos diferentes nombres, para que ambos puedan existir y se puede inyectar en la correcta ya sea usando: @AutoWired @Qualifier("dataTransferHandler") O @Resource(name="dataTransferHandler")

+0

Al darle a los frijoles diferentes nombres, ¿quiere decir cambiar el nombre de la clase? – Marco

+0

No, el nombre del bean - si lo llamó explícitamente '', o si está usando las anotaciones '@Service (" aName ")'. En su caso, parece que los dos frijoles tienen el mismo nombre, son tipos diferentes en ambos sentidos, –

+0

¡Perfecto! ¡Gracias, resolvió mis problemas! ¡Muchas gracias por la ayuda! – Marco

0

Usted puede dar atributo primaria = "true" a la definición de frijoles que desea tener la preferencia cuando se autoconecta. Pero los nombres del frijol deben ser diferentes. No hay solución para el mismo nombre de frijol.

En el tiempo de ejecución cuando obtendrá la clase autocableada, el bean verdadero primario tendrá preferencia para el autoencendido. Espero que esto te ayude. Aclamaciones.

Cuestiones relacionadas