J'aime l'injection basée sur le constructeur car elle me permet de faire des champs injectés final
. J'aime aussi l'injection par annotation car elle simplifie mon context.xml
. Je peux marquer mon constructeur avec @Autowired
et tout fonctionne bien, tant que je n'ai pas deux paramètres du même type. Par exemple, j'ai une classe:Spring - injecter 2 haricots de même type
@Component
public class SomeClass {
@Autowired(required=true)
public SomeClass(OtherClass bean1, OtherClass bean2) {
…
}
}
et un contexte d'application avec:
<bean id="bean1" class="OtherClass" />
<bean id="bean2" class="OtherClass" />
Il devrait y avoir un moyen de spécifier l'ID de haricot sur le constructeur de la classe SomeClass
, mais je peux » Je le trouve dans la documentation. Est-ce possible, ou est-ce que je rêve d'une solution qui n'existe pas encore?
'@ Autowire' est par nom aussi, mais dans ce cas, vous devez fournir setters. Mais ici, les arguments constructeur sont préférés, et '@ Autowire' ne fonctionnera pas si les deux arguments sont du même type. Par conséquent, la chose peut être résolue en utilisant '@ Qualifier'. –
a précisé la réponse. – Bozho
Remarqué ....... + 1 –