J’ai cette config de spring:
La classe TheClass
implémente TheInterface
. J’ai alors ce code Java (hypothétique):
@Autowired TheInterface x; @Autowired TheClass y;
Le démarrage automatique de TheInterface
fonctionne, mais le démarrage automatique de TheClass
échoue. Spring me donne une NoSuchBeanDefinitionException
pour la classe.
Pourquoi pouvez-vous câbler l’interface et non la classe?
Normalement, les deux fonctionnent, vous pouvez générer automatiquement des interfaces ou des classes.
Il y a probablement un générateur autoproxy quelque part dans votre contexte, qui enveloppe votre boo
bean dans un object proxy généré. Cet object proxy implémentera TheInterface
, mais ne sera pas un TheClass
. Lorsque vous utilisez des autoproxies, vous devez programmer l’interface et non l’implémentation.
Les candidats potentiels sont des mandataires transactionnels – utilisez-vous des transactions Spring, en utilisant AspectJ ou @Transactional
?