Saltar al contenido

Múltiples frijoles requeridos del mismo tipo en Spring

Te damos la bienvenida a nuestro espacio, en este sitio vas a hallar la respuesta de lo que buscas.

Solución:

Debe calificar su variable autocableada para decir cuál debe inyectarse

@Autowired
@Qualifier("A1Unmarshaller")
private Jaxb2Marshaller A1Unmarshaller;

El cableado automático predeterminado es por tipo, no por nombre, por lo que cuando hay más de un bean del mismo tipo, debe usar la anotación @Qualifier.

los Jaxb2Marshaller es perfectamente capaz de trabajar con múltiples contextos/xsd diferentes. Simplemente especifique varias rutas de contexto mediante los métodos setContextPaths.

@Bean(name="A1Unmarshaller")
public Jaxb2Marshaller A1Unmarshaller()
    Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller();
    unMarshaller.setContextPaths(
        "package name for the classes generate by XSD A1",
        "package name for the classes generate by XSD A2",
        "package name for the classes generate by XSD A3",
        "package name for the classes generate by XSD A4",
        "package name for the classes generate by XSD A5" );
    return unMarshaller;

De esa manera, solo necesita un solo marshaller/unmarshaller.

Enlaces

  1. Jaxb2Marshaller javadoc
  2. setContextPaths javadoc

Inyección usando @Resource anotación es lo que estás buscando. Puedes usar

@AutoWired
@Qualifier("A1Unmarshaller")
private Jaxb2Marshaller A1Unmarshaller;

Pero esa no es la única forma.

@Resource("A1Unmrshaller")

Hace el trabajo también. ¡Te sugiero que uses el último! Ver por qué

Tienes la opción de patrocinar nuestro quehacer escribiendo un comentario y dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *