关于使用动态代理创建代理对象是报错 java.lang.ClassCastException: $Proxy0 cannot be cast to 的解决办法
2015-04-25 14:10
1066 查看
出现此问题的场景一般有以下两种:
(1)在Java中使用代理模式创建对象。如何创建代理对象在这就不说了。首先,要为代理对象实现接口,然后生成的代理对象用接口的类型进行接收。此处是使用JDK的代理方式,另一种参考下面的第二种应用场景。
(2)在spring框架中使用代理的方式创建对象。Spring的文档中这么写的:Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。如果被代理的目标实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。
所以,解决办法是,如果用JDK动态代理,就必须为被代理的目标实现一个接口(要注意的地方是:需要将ctx.getBean()方法的返回值用接口类型接收);如果使用CGLIB强制代理,就必选事先将CGLIB包导入项目,设置beanNameAutoProxyCreator的proxyTargetClass属性为true。
(1)在Java中使用代理模式创建对象。如何创建代理对象在这就不说了。首先,要为代理对象实现接口,然后生成的代理对象用接口的类型进行接收。此处是使用JDK的代理方式,另一种参考下面的第二种应用场景。
(2)在spring框架中使用代理的方式创建对象。Spring的文档中这么写的:Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。如果被代理的目标实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。
所以,解决办法是,如果用JDK动态代理,就必须为被代理的目标实现一个接口(要注意的地方是:需要将ctx.getBean()方法的返回值用接口类型接收);如果使用CGLIB强制代理,就必选事先将CGLIB包导入项目,设置beanNameAutoProxyCreator的proxyTargetClass属性为true。
相关文章推荐
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...今天
- Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer错误解决办法
- 关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to or
- java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView解决办法
- unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法
- Validator问题及解决办法——java.lang.ClassCastException: org.apache.struts.validator.ValidatorForm cannot be cast to forms.RegisterForm
- 关于java.lang.ClassCastException: org.jbpm.jpdl.internal.model.JpdlProcessDefinition cannot be cast to java.util.List
- 解决异常:java.lang.ClassCastException:android.app.Aplication cannot be cast to 类名
- Spring+hibernate中的问题解决:java.lang.ClassCastException: $Proxy6 cannot be cast to com.mqEsb.service.imp
- 在maven项目中使用apache cxf中遇到异常 java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- 解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常
- java.lang.ClassCastException: com.sun.proxy.$Proxy* cannot be cast to***问题解决方案
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to XXX解决
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer解决
- Tomcat7出现HTTP Status 500 - java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl的解决
- 关于java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object的错误报告
- ClassCastException: $Proxy0 cannot be cast to (com......) 的解决办法
- 关于Spring 事务错误 java.lang.ClassCastException: $Proxy0 cannot be cast