Le printemps N'unique bean de type
j'ai un peu de mal au Printemps avec deux composant d'un service.
J'ai ce composant:
@Component
public class SmartCardWrapper
et celui-ci:
@Component
public class DummySmartCardWrapper extends SmartCardWrapper
Le service autowire les deux mais le printemps échoue en raison de cette attente:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.cinebot.smartcard.SmartCardWrapper] is defined: expected single matching bean but found 2: [dummySmartCardWrapper, smartCardWrapper]
Pourquoi il n'utilise pas les noms de classe?
Salut Tobia, semble que vous devriez utiliser l'annotation @Qualifier, consultez le lien: static.springsource.org/spring/docs/2.5.x/reference/...
OriginalL'auteur Tobia | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
C'est l'un des concepts les plus fondamentaux de Printemps - l'Inversion de Contrôle.
Vous n'avez pas besoin de déclarer les dépendances à l'aide de leur mise en œuvre types (pour éviter le couplage avec la mise en œuvre). Vous pouvez les déclarer à l'aide des interfaces ou des super-classes au lieu de cela, et de faire le Printemps de trouver la bonne mise en œuvre de la classe dans le contexte.
En d'autres termes, les haricots ne sont pas distingués par leur mise en œuvre classes, parce que vous pouvez changer la classe d'implémentation du bean sans changer les grains qui en dépendent. Si vous voulez faire la distinction entre différents haricots du même type, l'utilisation logique de haricots noms à la place:
N'est-il pas problème?
Les problèmes semble être la même chose... mais je ne comprends pas la solution. Je veux définir le haricot où j'ai roulé annotation @service pas sa super-classe ou de l'interface... je peux?
OriginalL'auteur axtavt