Un petit fond:Comment remplacer le comportement de Spring @Autowired
J'utilise Spring 2.5, et spécifiquement Spring IOC et les annotations.
J'utilise @Autowired
dans mon code (le Autowiring se fait par type) et utiliser @Component
pour exposer les classes au câblage automatique.
La situation décrite ci-dessous est survenue pendant que j'essayais de tester mon code.
maintenant au problème:
Note: J'utilise un autre contexte de printemps pour l'environnement de test.
J'ai une classe FOO
qui est @Autowired
mais dans le contexte de test que je veux utiliser une autre classe du même type MockFoo
(étend FOO
).
La configuration de Spring échoue automatiquement en raison de plusieurs options pour l'injection de dépendances de la classe FOO
(les deux FOO
et MockFOO
sont conformes à la vérification de type).
Je cherche un moyen d'injecter le haricot de test au lieu du haricot d'origine.
Je m'attendais à ce que Spring autorise l'utilisation du fichier de configuration Context pour remplacer une injection de bean ou pour que Spring n'authise pas un bean spécifique.
MAIS
Toutes ces options semblent existe seulement pour les haricots qui ont été initialement définis dans le contexte du printemps fichier de configuration.
c'est une bonne solution quand on n'a pas la même instance injectée à plusieurs classes - mais dans un grand projet où un acte de classe en tant que fournisseur de service (c'est un singleton) et est injecté à plusieurs classes, j'espère qu'il y a une solution plus facile/meilleure pour éviter d'injecter chaque classe qui utilise l'original – Mark