2010-09-16 10 views

Répondre

2

Je ne suis pas sûr ce que la vraie question est (si elle est sur la cause réelle , fournissant le plein stacktrace pourrait être utile), mais le fait est que vous êtes absent le aopalliance.jar sur votre chemin de classe (qui était précédemment inclus dans les jarres Spring comme mentionné dans this thread ou this blog post).

Avec le niveau prévu des détails, je suppose que le printemps se charge de son TransactionInterceptor qui est une mise en œuvre de o.a.a.Advice et est à la recherche de la dépendance, ce qui manque.

+0

Je trouve la question. La raison en est que, de toute évidence, Hibernate et Spring utilisent une version différente de certains pots. Passer aux bonnes versions des deux frameworks a résolu le problème. –

3

Spring dispose de deux modes de création de proxys pour prendre en charge les transactions. Le mode par défaut consiste à créer des proxys JDK, mais cela ne fonctionne que si vous injectez des interfaces. Si vous injectez des classes, les proxys CGLib seront utilisés, et ils sont créés en utilisant AspectJ (et par conséquent le aopalliance.jar et le spring-aspects.jar sont nécessaires sur le classpath).

Mon conseil: reportez-vous à vos services et daos par l'interface:

private MyDaoInterface dao; 

public void setDao(MyDaoInterface dao){ 
} 

et le printemps choisira automatiquement l'approche basée sur Proxy.

Voir: