使用Spring的AOP时报错“ClassCastException: com.sun.proxy.$Proxy5 cannot be cast to com.demo.aop.Target“

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Spring的AOP时报错“ClassCastException: com.sun.proxy.$Proxy5 cannot be cast to com.demo.aop.Target“相关的知识,希望对你有一定的参考价值。

异常

原因

对于Spring AOP 采用两种代理方法,一种是动态JDK,一种是CGLIB。

如果目标类有接口,则会使用动态JDK创建代理对象;如果没有接口则会选择使用CGLIB创建代理对象。

在本例中使用的是有接口的类来获取,所以报错了

解决

将目标对象变成目标对象的接口,代码如下:

还有一种解决方法,如下:

既然本Target类实现了接口,那么使用的是动态JDK创建代理对象,那么我们就让它用CGLIB创建代理对象。

取消掉实现接口

以上是关于使用Spring的AOP时报错“ClassCastException: com.sun.proxy.$Proxy5 cannot be cast to com.demo.aop.Target“的主要内容,如果未能解决你的问题,请参考以下文章

使用spring-test时报错

spring使用junit进行测试时报错,出现空指针

spring使用junit进行测试时报错,出现空指针

spring使用junit进行测试时报错,出现空指针

mybatis-spring-boot-starter在maven包时报错

spring data jpa执行update和delete语句时报错处理