<tx:annotation-driven>导致java.lang.ClassNotFoundException:org.aopalliance.aop.Advice </tx:annotation-driven>

时间:2010-09-16 00:34:04

标签: java hibernate spring jpa transactions

任何人都知道为什么添加注释驱动的声明导致找不到的aopalliance类。我没有使用Spring默认值明确定义编织。

感谢任何帮助

2 个答案:

答案 0 :(得分:3)

Spring有两种创建代理以支持事务的模式。默认模式是创建JDK代理,但只有在注入接口时才有效。如果你注入类,将使用CGLib代理,它们是使用AspectJ创建的(因此在类路径上需要aopalliance.jar和spring-aspects.jar)。

我的建议:通过界面参考您的服务和道具:

private MyDaoInterface dao;

public void setDao(MyDaoInterface dao){
}

并且Spring将自动选择基于代理的方法。

请参阅:

答案 1 :(得分:2)

我不确定真正的问题是什么(如果它是关于真正的原因 1 ,提供完整的堆栈跟踪可能会有所帮助)但事实是你目前缺少{{1你的类路径(以前包含在this threadthis blog post中提到的Spring jar中)。

1 根据提供的详细信息,我的猜测是Spring正在加载aopalliance.jar,这是TransactionInterceptor的一个实现,并且正在寻找依赖关系,这是丢失。