本人要使用spring的AOP做操作日志功能,想代理springmvc的controller
假如使用jdk自带的代理,目标类就必须实现某个接口,对controller不适用。
假如使用cglib,由于本人数据访问层使用的是mybatis,自动生成的mapper,没有默认的构造方法,cglib要求代理的目标类要有默认的构造方法,启动就报错了。
问一下高手们有碰到这种问题吗,能不能给个解决思路。
<aop:aspectj-autoproxy proxy-target-class=”true”/>,加上红色部分,就是使用cglib代理了,否则使用jdk的默认代理。
报错内容如下:
Error creating bean with name “userMapper”: Post-processing of the FactoryBean”s object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.sun.proxy.$Proxy22]: 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 com.sun.proxy.$Proxy22
假如使用jdk自带的代理,目标类就必须实现某个接口,对controller不适用。
假如使用cglib,由于本人数据访问层使用的是mybatis,自动生成的mapper,没有默认的构造方法,cglib要求代理的目标类要有默认的构造方法,启动就报错了。
问一下高手们有碰到这种问题吗,能不能给个解决思路。
<aop:aspectj-autoproxy proxy-target-class=”true”/>,加上红色部分,就是使用cglib代理了,否则使用jdk的默认代理。
报错内容如下:
Error creating bean with name “userMapper”: Post-processing of the FactoryBean”s object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.sun.proxy.$Proxy22]: 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 com.sun.proxy.$Proxy22
解决方案
20
proxy-target-class=”true” 是强制使用CGLIB生成代理
去掉这个试试呢?
去掉这个试试呢?
20
那你这个userMapper在代理中是什么角色呢? 就是他跟controller什么关系?
你这错误:Error creating bean with name “userMapper”: Post-
没搞清楚你是要代理什么? 配置发出来看看