【问题标题】:AspectJ Load Time Weaving with Spring Transaction Manager and Maven使用 Spring Transaction Manager 和 Maven 进行 AspectJ 加载时间编织
【发布时间】:2011-09-03 20:25:22
【问题描述】:

我正在尝试使用 Spring 的事务管理器启用加载时间编织,但运气不佳。目前我只是试图在 @Transactional 方法中运行一个简单的 em.persist() 但它似乎没有运行事务,如所见:TransactionSynchronizationManager.isActualTransactionActive()

我的应用程序上下文文件包含:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="TEST-pu"/>
    </bean>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" proxy-target-class="true"/>

我的 pom.xml 包含:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-agent</artifactId>
    <version>2.5.4</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.6.10</version>
</dependency>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <forkMode>once</forkMode>
        <argLine>
            -javaagent:${settings.localRepository}/org/springframework/spring-agent/2.5.4/spring-agent-2.5.4.jar
        </argLine>
        <useSystemClassloader>true</useSystemClassloader>
    </configuration>
</plugin> 

似乎设置存在一些问题,虽然我遇到了很多关于如何实现 AspectJ / 加载时间编织的示例,但它们似乎都在使用 Eclipse 插件,其中 1) 我试图避免使用任何类型的插件和 2)我正在使用 Intellij。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: spring maven aop aspectj transactional


    【解决方案1】:

    你添加了吗:

    <context:load-time-weaver/>
    

    你的设置?

    【讨论】:

    • 添加这个似乎会调用 XmlBeanDefinitionStoreException,“匹配的通配符是严格的,但找不到元素 'context:load-time-weaver' 的声明”,我是否需要添加一个 maven 依赖项为了这个工作?
    • 您需要 spring-context.jar(顺便说一句,您使用的是相当过时的 Spring 版本)并且您必须定义 xmlns:context 命名空间 - 请参阅 Spring docs 和我的 blog
    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多