使用AspectJ的Spring事务

时间:2012-11-21 13:32:49

标签: spring aop aspectj transactional

我在Spring中遇到@Transaction问题。 基本上,没有使用以下消息创建事务:

由于没有正在进行的交易,

延迟身份插入

我在Spring AOP论坛中提出了对问题的完整描述

http://forum.springsource.org/showthread.php?132612-Transaction-management

任何建议都将不胜感激!

斯特凡诺

2 个答案:

答案 0 :(得分:0)

在您的代码中,您已经定义了这样的服务:

@Service
@Configurable
public class ServiceImpl<T> implements Service<T> {
@Override
@Transactional
public T save(T entity) {
          ....
    }
}

我不知道您为何使用@Configurable注释。如果你不需要它们(如果你没有通过新的创建这个服务的实例),我会删除它们。

原因是我记得春季文档说@Configurable启用注入,但它没有说明由@Configurable

答案 1 :(得分:0)

找到了解决方案。

问题在于configuratoin。我添加了两个元素context:spring-configuredcontext:load-time-weaver,这意味着两个不同的东西。第一个激活AspectJ 编译时编织(我不明白),第二个激活AspectJ 加载时间编织。我认为这两个元素并不能很好地协同工作。

我决定使用编译时编织器和(稍微挣扎一下......)我发现(显然)外部罐子没有用这种配置编织,只是因为它们还没有被构建。

最简单的解决方法是修改aspectj-maven-plugin节点下添加的configuration(在POM.xml中)的配置:

<weaveDependencies>
<weaveDependency>
<groupId>GROUP-ID</groupId>
<artifactId>ARTIFACT-ID</artifactId>
</weaveDependency>
</weaveDependencies>
对于你需要编织的每件神器。

现在交易正常!

@Ralph:非常感谢您的时间!

此致

斯特凡诺