zoukankan      html  css  js  c++  java
  • Spring中com.sun.proxy.$Proxy12 cannot be cast to 包名.类名错误

    错误原因:

     spring中的aop会使用jdk的动态代理或者cglib为目标对象创建代理。如果被代理的目标实现了至少一个接口,则会使用jdk动态代理;如果没有实现任何接口,则使用cglib代理。如果被代理目标类既没有实现接口,又没有引入cglib,就会报这个错误。

    解决方法:

      (1)为被代理的目标实现一个接口

      (2)导入cglib的包,然后加上

    1 <aop:aspectj-autoproxy proxy-target-class="true"/> 

     第一种解决方法代码如下:

    1        //其中UserServiceImpl是接口实现类,UserService是接口
    2        //当使用接口实现类获取时会出现异常
    3        UserServiceImpl userService = (UserServiceImpl) 
    4        applicationContext.getBean("userService");
    5        
    6         //当使用接口获取时不会出现异常
    7         UserService userService1 = (UserService) applicationContext.getBean("userService1");
    8       

    原因:不能用接口的实现类(UserServiceImpl01_AOP)来转换Proxy的实现类,它们是同级,应该用共同的接口来转换。

    使用第二种解决方法 两种方式获取都不会报异常。

  • 相关阅读:
    Oracle使用笔记
    跳转至锚点
    项目中使用到的AOP
    短信验证码接口使用
    阿里人脸识别接口
    java实现网页截图
    java后台接收微信服务号/订阅号消息
    java 实现redis缓存
    redis 常用命令
    被骗了,自己还不知道
  • 原文地址:https://www.cnblogs.com/zou-zou/p/9382932.html
Copyright © 2011-2022 走看看