【发布时间】:2010-09-16 00:34:03
【问题描述】:
任何人都知道为什么添加注释驱动的声明会导致找不到 aopalliance 类。我没有明确定义编织,所以使用 Spring 默认值。
感谢任何帮助
【问题讨论】:
标签: java hibernate spring jpa transactions
任何人都知道为什么添加注释驱动的声明会导致找不到 aopalliance 类。我没有明确定义编织,所以使用 Spring 默认值。
感谢任何帮助
【问题讨论】:
标签: java hibernate spring jpa transactions
Spring 有两种创建代理以支持事务的模式。默认模式是创建 JDK 代理,但只有在注入接口时才有效。如果注入类,将使用 CGLib 代理,它们是使用 AspectJ 创建的(因此类路径中需要 aopalliance.jar 和 spring-aspects.jar)。
我的建议:通过接口参考你的服务和daos:
private MyDaoInterface dao;
public void setDao(MyDaoInterface dao){
}
Spring 会自动选择基于代理的方法。
见:
【讨论】:
我不确定真正的问题是什么(如果是关于真正的原因1,提供完整的堆栈跟踪可能会有所帮助)但事实是您目前缺少aopalliance.jar在您的类路径上(之前包含在 this thread 或 this blog post 中提到的 Spring jar 中)。
1 根据所提供的详细信息级别,我的猜测是 Spring 正在加载它的 TransactionInterceptor,它是 o.a.a.Advice 的一个实现,并且正在寻找缺少的依赖项。
【讨论】: