Estoy usando Spring 3.0.4. Tengo algunos frijoles que usan la anotación @Autowired en Maps. Estos mapas se definen dentro de un archivo application-context.xml (ya que estos mapas se construyen utilizando varios métodos de fábrica).Autowiring Map no funciona como se esperaba
Cuando uso mi depurador, puedo ver que el mapa se construye utilizando la id del bean correctamente (esperado). Sin embargo, una vez que se inicia el proceso de autoenvío, afirma que no puede encontrar un bean con el ID que acaba de crearse.
pieza de código:
@Autowired
@Qualifier("dienstverbandMap")
private Map<String, String> dienstverbandMap;
Pedazo de contexto xml:
<bean class="java.util.HashMap" id="dienstverbandMap" factory-bean="someFactoryMethod" factory-method="getMappedMap"/>
Detalle importante, cuando cambio el tipo de java.lang.Object tanto en mi clase y el contexto XML se recibe cableado De hecho, puedo convertirlo a HashMap en mi código y hacer que todo funcione. Pero eso no es lo que quiero obviamente.
¿Alguien tiene una explicación de lo que estoy haciendo mal?
Tienes razón. La firma de mi método de fábrica devuelve Map <>, cuando cambié eso a HashMap, todo comenzó a funcionar. ¡¡Gracias!! :) –
Me imaginé, la fábrica implementó una interfaz que forzó el tipo de retorno a ser un mapa (o más específico). Sin embargo, incluso entonces no funcionó. Tuve que cambiar la interfaz para que esto funcione. Yuk :) –