J'ai un haricot de printemps qui s'étend Je sais que c'est une bonne idée Pour utiliser l'interface et c'est tout le point de CIO, mais s'il vous plaît ne vous suggérez pas d'utiliser l'interface. p> p> hibernateaosupport code>. Je veux que ce haricot soit injecté dans mes contrôleurs, mais je ne veux pas qu'elle implémente une interface. Je veux juste vous référer à la classe de béton de l'intérieur du reste de mon code (ne pas utiliser l'aopproxy peut-être?) Est-ce que quelqu'un a un moyen de faire cela?
3 Réponses :
vérifier ce qui suit. Assurez-vous que vous avez un cglib sur votre path. P>
http: // static.springsource.org/spring/docs/3.0.0.m3/spring-framework-reference/html/ch08s06.html P>
Le tapis de classe va bien, car comme je l'ai dit, tout a fonctionné avant de retirer l'interface .... n'aurait pas pu travailler auparavant sans cglib ....
Si la classe à proxy (par proxy transactionnel dans votre cas) implémente toute interface ( Donc, cela crée une proxy de type Si vous ne voulez pas utiliser l'interface, vous pouvez remplacer la stratégie utilisée par aspect transactionnel en déclarant initialisationBean code> implémenté par
hibernateaosupport code> dans votre cas), ressort par défaut utilise la stratégie de proxyage basée sur la stratégie de proxy sur les proxies dynamiques JDK. p>
initialisationBean code>, que, évidemment, ne peut pas être injecté dans un champ de type
mysampleService code>. P>.
proxy-cible-class = "vrai" code>. p>
De plus, ne faites pas la finale de la classe concrète, sinon vous ne pourrez pas le commander de cette façon.
Axtavt Merci, ça a fonctionné :) Le haricot est maintenant là et pas null, exactement ce que je voulais, n'aurait jamais compris que TX: Attribut d'annotation alors merci encore!
et assurez-vous qu'il a un constructeur vide mentionné par Alf ici
Vous pouvez tout écrire, y compris le contrôleur mappé dans le XML comme haricots, vous n'avez pas besoin d'écrire des interfaces. Sinon, avec l'utilisation d'une annotation, vous devez construire des interfaces pour les proxy. P>
Qu'est-ce qui vous oblige actuellement à utiliser une interface?
Bon point Axtavt (et Adam) - Il donne une java.lang.classnotfoundexception: mysampleService, mais la classe est absolument là. Cela n'a commencé que de donner que lorsque j'ai enlevé le "MySampleInterface" correspondant de mon projet ....
Avez-vous votre mySampleService implémentant une autre interface du tout - toute interface de marqueur, etc.? En outre, avez-vous des annotations telles que
@TransAderal code> sur mysampleService?
Oui MySampleService a @TransActional (Readonly = False) au niveau de la classe et implémente uniquement ce que ses superclasses (hibernateaosupport) implémentent ... merci!
Cette erreur est dans la trace aussi - org.springframework.beans.Factory.noschbeandefinitionExcepté Ion: Pas de haricot de type [com.sample.mysampleservice] trouvé pour la dépendance: attendu au moins 1 haricot qui qualifie de candidat d'AutoWire pour cette dépendance. Annotations de dépendance: {@ org.springframework.beans.Factory.annotation.Autowired (req uired = true)}