spring的动态代理,碰到了一个类型转换的问题:java.lang.ClassCastException: com.sun.proxy.$Proxy16 cannot be cast to com.
生活随笔
收集整理的這篇文章主要介紹了
spring的动态代理,碰到了一个类型转换的问题:java.lang.ClassCastException: com.sun.proxy.$Proxy16 cannot be cast to com.
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
spring的動態(tài)代理,碰到了一個類型轉(zhuǎn)換的問題:
java.lang.ClassCastException: com.sun.proxy.$Proxy16 cannot be cast to com.Charon.service.UserServiceImpl
首先介紹一下spring的動態(tài)代理。
spring使用的動態(tài)代理有兩種:JDK Proxy 和CGLIB。使用前者必須實現(xiàn)至少一個接口才能實現(xiàn)對方法的攔截。使用后者需要兩個jar包:asm.jar和cglib.jar,并修改spring配置文件。
我在測試時使用了JDK Proxy,經(jīng)過查找資料找到了問題的原因。下面是我的測試用例:
原因:第二行即為報錯的根源。不能用接口的實現(xiàn)類(UserServiceImpl)來轉(zhuǎn)換Proxy的實現(xiàn)類,它們是同級,應(yīng)該用共同的接口來轉(zhuǎn)換。將第二行代碼修改:
UserService userServiceImpl = (UserService)context.getBean("userServiceImpl"); UserService userServiceImpl = (UserService)context.getBean("userServiceImpl");//UserService是接口修改之后,程序運(yùn)行正常。
總結(jié)
以上是生活随笔為你收集整理的spring的动态代理,碰到了一个类型转换的问题:java.lang.ClassCastException: com.sun.proxy.$Proxy16 cannot be cast to com.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: false shell 判断_Shell
- 下一篇: 交换机短路_你了解交换机的相关知识吗?还