开发者

How to set springframework @Transactional with AspectJ

I want to use spring-aspects to make my methods transactional, but without using Spring AOP (Spring AOP works jus开发者_如何学Got fine with: <tx:annotation-driven/>). I'm using Maven to manage my project.

Is there a way to do compile time weaving on my project classes so "they are Transactional". I was trying to use the Mojo's AspectJ Maven Plugin, but without any good results.

Please help.


I figured it out. Maven plugin works fine but the problem was with my spring config: I had:

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

What I needed was:

<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>

Now it works fine. And performace of my @Transactional methods improved and that what I was aming for.

Here is my maven aspectj plugin config:

<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>

hope this helps someone.


maybe you can try this:

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


Here is a link to the answer I gave on how to do the same in java config:

Spring @Transactional is applied both as a dynamic Jdk proxy and an aspectj aspect

Hope it helps

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜