43 votes

Classe Spring Autowiring vs interface?

J'ai cette configuration de printemps:

 <bean id="boo" class="com.x.TheClass"/>
 

La classe TheClass implémente TheInterface . Ensuite, j'ai ce code Java (hypothétique):

 @Autowired
TheInterface x;

@Autowired
TheClass y;
 

Le câblage automatique de TheInterface fonctionne mais le câblage automatique de TheClass échoue. Le printemps me donne un NoSuchBeanDefinitionException pour la classe.

Pourquoi pouvez-vous câbler l'interface et non la classe?

56voto

skaffman Points 197885

Normalement, à la fois, vous pouvez autowire des interfaces ou des classes.

Il y a probablement un autoproxy générateur quelque part dans votre contexte, qui est l'emballage de votre boo haricot dans un proxy généré objet. Ce proxy objet de mettre en oeuvre TheInterface, mais ne sera pas un TheClass. Lors de l'utilisation de autoproxies, vous avez besoin de programme pour l'interface, pas de la mise en œuvre.

Le candidat probable est transactionnelle procurations - vous à l'aide de Printemps transactions, à l'aide de AspectJ ou @Transactional?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X