2010-02-03 2 views
5

Je veux utiliser spring-aspects pour rendre mes méthodes transactionnelles, mais sans utiliser Spring AOP (Spring AOP fonctionne très bien avec: <tx:annotation-driven/>). J'utilise Maven pour gérer mon projet.Comment définir springframework @Transactional avec AspectJ

Y a-t-il un moyen de faire l'heure de compilation tissage sur mes classes de projet afin qu'ils "sont Transactional". J'essayais d'utiliser le Mojo's AspectJ Maven Plugin, mais sans de bons résultats.

Aidez-nous s'il vous plaît.

+0

Quel est le problème avec le plugin aspectj? Pouvez-vous votre pom? –

+0

Pas de problème avec le plugin J'ai eu un problème avec la configuration du ressort. – Monku

Répondre

4

Je l'ai compris. plugin Maven fonctionne très bien, mais le problème était avec ma config de printemps: j'avais:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 
<tx:annotation-driven transaction-manager="transactionManager"/> 

Ce que je avais besoin était:

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 
<bean class="org.springframework.transaction.aspectj.AnnotationTransactionAspect" factory-method="aspectOf"> 
    <property name="transactionManager" ref="transactionManager"/> 
</bean> 

Maintenant, il fonctionne très bien. Et performace de mes méthodes @Transactional améliorées et que ce que je cherchais.

Voici mon maven aspectj config plugin:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.3</version> 
    <configuration> 
     <aspectLibraries> 
      <aspectLibrary> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-aspects</artifactId> 
      </aspectLibrary> 
     </aspectLibraries> 
     <source>1.5</source> 
     <showWeaveInfo>true</showWeaveInfo> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

espoir que cela aide quelqu'un.

+0

J'ai une question pour vous: dans ce post, vous avez remplacé le type du bean 'transactionManager' de' JpaTransactionManager' par 'HibernateTransactionManager'. Donc vous dites 'org.springframework.transaction.aspectj.AnnotationTransactionAspect' ne fonctionne pas avec JPA? – STaefi

+0

Je ne pense pas. Très probablement, j'ai foiré quelque chose/ne l'ai pas configuré correctement pour que JPA fonctionne, mais d'une certaine manière cela a fonctionné pour Hibernate. C'était il y a longtemps, je ne me rappelle même pas de quel projet il s'agissait. – Monku

4

peut-être vous pouvez essayer ceci:

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj"/> 
Questions connexes