9

我想用来spring-aspects使我的方法具有事务性,但不使用 Spring AOP(Spring AOP 可以很好地使用:)<tx:annotation-driven/>。我正在使用 Maven 来管理我的项目。

有没有办法在我的项目类上进行编译时编织,所以“它们是Transactional”。我试图使用Mojo 的 AspectJ Maven 插件,但没有任何好的结果。

请帮忙。

4

3 回答 3

5

我想到了。Maven 插件工作正常,但问题出在我的 spring 配置上:我有:

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

我需要的是:

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

现在它工作正常。我的@Transactional 方法的性能得到了改善,这也是我所追求的。

这是我的 Maven aspectj 插件配置:

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

希望这可以帮助某人。

于 2010-02-06T20:40:51.237 回答
4

也许你可以试试这个:

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj"/>
于 2013-05-29T14:55:12.153 回答
1

这是我给出的关于如何在 java config 中执行相同操作的答案的链接:

Spring @Transactional 既可用作动态 Jdk 代理,也可用作 aspectj 方面

希望能帮助到你

于 2015-11-26T15:29:10.203 回答