Java/Spring Problème avec @Service et @Autocâblés annotations
[printemps 3.0.5]
[jboss 5.1]
J'ai plusieurs classes étiquetées comme @Service
, qui implémente cette interface.
Par exemple,
@Service(value="test1")
public TestImpl1 implements Test {}
@Service(value="test2")
public TestImpl2 implements Test {}
Prochaine, j'ai la structure suivante
public SomeClass {
@Autowired
@Qualifier("test1")
Test test1;
@Autowired
@Qualifier("test2")
Test test2;
Je suis une exception (au déploiement)
10:36:58,277 ERROR [[/test-web]] Servlet /test-web threw load()
exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
unique bean of type [pl.tests] is defined: expected single matching
bean but found 2: [test1, test2]
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doReso lveDependency(DefaultListableBeanFactory.java:
796)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolv eDependency(DefaultListableBeanFactory.java:
703)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostPro cessor
$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:
474)
Ce que quelqu'un sait comment résoudre ce problème?
T.
Qu'est-ce que
désolé, pl.les tests.SomeClass
pl.tests
?désolé, pl.les tests.SomeClass
OriginalL'auteur user6778654 | 2011-02-11
Vous devez vous connecter pour publier un commentaire.
Quelques options:
@Resource(name="test1")
dans le point d'injectionjavax.inject.Qualifer
mécanisme. En bref - vous définir une annotation (@Test
) et d'annoter l'annotation avec@Qualifier
. Ensuite, utilisez@Autowired @Test
sur le point d'injection.<qualifier />
, mais essayez d'ajouter@Qualifier("test1")
sur la définition du serviceVoici la documentation à ce sujet
par "injecetion point", je veux dire le point où vous injectez, pas à la définition du service.
J'ai fait comme vous l'avez écrit maintenant. Il semble que le problème est dans la même déclaration des classes de services. Maintenant, j'ai le code: @Service(valeur="test1") public TestImpl1 implémente Test {} @Service(valeur="test2") public TestImpl2 implémente Test {} Sans point d'injection. J'ai le même exception: est défini: unique correspondant bean, mais trouvé 2: [test1, test2]
vous l'avez quelque part d'autre, ou vous n'avez pas nettoyé votre environnement
J'ai été nettoyé ma QUE... C'est le travail. Merci pour les conseils.
OriginalL'auteur Bozho