tutorial springframework framework java spring

java - springframework - Primavera: inyecta 2 granos del mismo tipo



spring framework 5 (1)

@Autowired es por tipo (en este caso); use @Qualifier para autoenviar el nombre, siguiendo el ejemplo de los documentos de primavera :

public SomeClass( @Qualifier("bean1") OtherClass bean1, @Qualifier("bean2") OtherClass bean2) { ... }

Nota: A diferencia de @Autowired que es aplicable a campos, constructores y métodos de múltiples argumentos (lo que permite reducir las anotaciones de calificadores en el nivel de parámetro), @Resource solo se admite para campos y métodos de establecimiento de propiedades de bean con un solo argumento. Como consecuencia, quédate con los calificadores si tu objetivo de inyección es un constructor o un método de múltiples argumentos.

(debajo de ese texto está el ejemplo completo)

Me gusta la inyección basada en el constructor ya que me permite hacer que los campos inyectados sean final . También me gusta la inyección dirigida por anotación, ya que simplifica mi context.xml . Puedo marcar mi constructor con @Autowired y todo funciona bien, siempre que no tenga dos parámetros del mismo tipo. Por ejemplo, tengo una clase:

@Component public class SomeClass { @Autowired(required=true) public SomeClass(OtherClass bean1, OtherClass bean2) { … } }

y un contexto de aplicación con:

<bean id="bean1" class="OtherClass" /> <bean id="bean2" class="OtherClass" />

Debería haber una manera de especificar el ID de bean en el constructor de la clase SomeClass , pero no puedo encontrarlo en la documentación. ¿Es posible, o estoy soñando con una solución que aún no existe?