spring代理注解<aop:aspectj-autoproxy />

spring默认使用jdk的代理方式,
使用jdk的代理方式我们知道,代理的类需要实现一个接口,若果没有就会报,java.lang.NoSuchMethodException: com.sun.proxy.$Proxy83.loginPage()异常,


这时候我们可以使用<aop:aspectj-autoproxy proxy-target-class="true"/>让spring使用cglib的代理方式,
cglib的时候需要有默认的构造方法,class不能为final的,


如果你对项目中的action就是contorller层代理这就会报这个异常,因为contorller这层没有实现接口,


我们使用<aop:aspectj-autoproxy proxy-target-class="false"/>来指定让他来使用cglib的代理方式,但是: 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; 可能会报这个异常,它的意思不能代理final的或后类,我觉的这个是使用的baseDaoImpl的问题,全部继承了basedaoImpl在这个里面使用了

 ParameterizedType pt = (ParameterizedType) this.getClass()
                .getGenericSuperclass();
        this.clazz = (Class<T>) pt.getActualTypeArguments()[0];

Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.ClassCastException-->java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

需要这个类不实现接口,


解决方案值配置<aop:aspectj-autoproxy />  现在发现应该是spring会自动在JDK动态代理和CGLIB之间转换。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值