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的实现类,它们是同级,应该用共同的接口来转换。

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

  • 相关阅读:
    poj2346
    poj3748
    poj1205
    PostThreadMessage 使用注意问题
    CBitmap Detach DeleteObject关系
    音视频编码技术与格式大全
    利用 DirectShow 开发自己的 Filter
    VC+DirectShow对视频进行图片处理VC教程电脑教程之家.htm
    Directx报错01
    深圳超多维光电子有限公司
  • 原文地址:https://www.cnblogs.com/zou-zou/p/9382932.html
Copyright © 2011-2022 走看看