如何使用jpa:使用proxy-target-class =“true”的存储库

时间:2012-12-20 17:05:19

标签: spring spring-aop spring-data

我用

<tx:annotation-driven transaction-manager="transactionManager" />
<jpa:repositories base-package="com.xxwell.amkey.domain"
    transaction-manager-ref="transactionManager" />

它就像一个魅力。但是,要为项目添加方面,我需要CGLIB。将上述行更改为

<tx:annotation-driven transaction-manager="transactionManager"
    proxy-target-class="true" />
<jpa:repositories base-package="com.xxwell.amkey.domain"
    transaction-manager-ref="transactionManager" />

导致启动上下文失败:Cannot subclass final class class $Proxy45为我定义的每个存储库。是不是可以一起使用,还是可以一起使用?

3 个答案:

答案 0 :(得分:3)

如果您需要cglib样式代理,那么您必须从存储库接口中删除@Transactional注释,并将其移动到调用它的service / s class / es。

CGLIB样式扩充直接在它增强的类上工作。接口并不重要。

答案 1 :(得分:0)

无法建议最终方法,因为它们无法覆盖。也许您的一个父类有最终方法,或者您的班级是最终的。

答案 2 :(得分:0)

其他选项是摆脱

proxy-target-class="true"

在所有AOP位置引入适当的接口(假设在服务层)

相关问题