Printemps @Autocâblés avec 2 fèves de même type
J'ai l'défini suivant.
@Autowired
DaoType1<object1> someDao;
@Autowired
DaoType1<object1> someListDao;
et dans mon haricot définitions que j'ai deux grains du même type
<bean id="someDao" class="com.example.DaoType1" />
<bean id="someListDao" class="com.example.DaoType1" />
La deuxième haricot est importé à partir d'un autre fichier xml si cela fait une différence. Ils ont des propriétés différentes d'être ensemble. Pourquoi est le printemps, de ne pas jeter une erreur car 2 haricots du même type ont été définis. Faut-il utiliser des noms de variables, car ils correspondent à la bean id. Le dao sont différents et la fonctionnalité fonctionne comme prévu si j'avais utilisé @Qualificatifs pour les deux haricots.
Ici est une version plus concise. J'ai laissé de côté d'autres haricots depuis que j'ai ils ne sont pas pertinents.
applicationContext.xml
<import resource="classpath:dm-services-crud.xml"/>
<bean id="ruleListCrudService" class="com.idna.dm.service.crud.impl.RuleCrudServiceImpl">
<property name="crudDao" ref="ruleListCrudDao" />
</bean>
dm-services-crud.xml
<bean id="ruleCrudService" class="com.idna.dm.service.crud.impl.RuleCrudServiceImpl">
<property name="crudDao" ref="ruleCrudDao" />
<property name="ruleNetworkOfNodesCrudService" ref="ruleNetworkOfNodesCrudService" />
<property name="elementMappingsCrudService" ref="elementMappingsCrudService" />
<property name="ruleCrudDao" ref="newRuleCrudDao"/>
</bean>
par défaut-autowire n'est pas présent dans aucun de mes fichiers xml.
@Resource
, alors que ce serait cohérent.pourriez-vous montrer l'ensemble de la
applicationContext.xml
(les deux) ?
OriginalL'auteur DeliveryNinja | 2010-10-13
Vous devez vous connecter pour publier un commentaire.
Ce qui semble être un comportement attendu. Le la documentation dit:
Je suppose que cela signifie que vous avez spécifié
default-autowire="byName"
dans votre applicationContext.xml.Cependant, refactoring peut affecter ce de façon imprévisible. C'est pourquoi (je pense) il est conseillé de changer de permettra à l'autowiring par type, et de lever l'ambiguïté de haricots par l'utilisation de
@Qualifier
(comme vous l'avez remarqué)@Resource
plutôt que@Autowired
(comme skaffman noté)voir mon peraphrased dernier paragraphe
Réponse courte: il n'est pas de travail. Le printemps est la résolution de l'permettra à l'autowiring dans le mannor qu'il juge utile. Actuellement, cela correspond à votre fonctionnalité désirée. Vous avez un potentiel d'ambiguïté et vous devez résoudre qu'elle est décrite par Bozho.
voir ma réponse mis à jour. Il fonctionne réellement 🙂
ok je vais regarder le code de base de demain et de confirmer la réponse si ses le cas. Merci.
OriginalL'auteur Bozho
La
@Autowired
annotation se comporte légèrement différemment de la "autowire par type de cahier des charges, sur la base de xml bean définitions.Lors de l'utilisation d'annotations vous n'êtes pas techniquement de faire une auto de fil... vous êtes à la définition de la valeur basée sur l'annotation. Le autowire annotation a la même fonction que le xml de l'élément de propriété.
OriginalL'auteur Michael Wiles