Classe Autowiring Printemps vs interface?

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 ?