Spring AOP 配置需要注意的问题,CGLIB
在生成aop代理类的时候,报错: Could not generate CGLIB subclass of class [class XXXX]: Common causes of this problem include using a final class or a non-visible class;
后经过检查, 原来在spring启动aop的配置里面是这样写的
1 <aop:aspectj-autoproxy proxy-target-class="true"/>
2<tx:annotation-driven proxy-target-class="true" transaction-manager="txManager" />
这样的情况,Spring是采用CGLIB去代理,而采用此方式代理,是不可以面向接口编程的,也就是说要代理的类不可以实现接口,而且要想正常使用貌似还要加上一个默认构造函数.
所以,解决这个问题,用Spring默认的代理方式就可以了,配置改成
1 <aop:aspectj-autoproxy/>
2<tx:annotation-driven transaction-manager="txManager" />
就OK了.
时间: 2024-10-10 20:11:37