Cannot subclass final class class $Proxy145

类似以下的spring错误信息:

org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy145]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy145

解决问题的检查点:

1、需要AOP拦截的类是否是final的,final类不可使用CGLIB来代理。

2、是否在给BEAN配AOP的时候强制使用CGLIB,如果是则可指定proxyTargetClass属性以让spring强制代理目标类。

3、类是否被多次代理了,如果类被多次代理过,则第二次进行代理的时候拿到的是第一次代理后的对象,这个对象是个final形式的,所以会出现这个错误。

基于第三点要注意,类是否被多次代码不紧紧取决于类是否被配置了多次AOP,如果类实现了某个接口,则还要看类实现的接口是否被aop拦截过。如果类实现了接口且接口也被AOP拦截了,则很可能出现上面的错误(是否出错取决于AOP代理执行的顺序)。

猜你喜欢

转载自wls981.iteye.com/blog/1991356