我要使用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
------解决方案--------------------
proxy-target-class="true" 是强制使用CGLIB生成代理
去掉这个试试呢?
------解决方案--------------------
那你这个userMapper在代理中是什么角色呢? 就是他跟controller什么关系?
你这错误:Error creating bean with name 'userMapper': Post-
没搞清楚你是要代理什么? 配置发出来看看