日期:2014-05-20  浏览次数:20710 次

从spring 容器获得bean的问题
这时其中出错的一段代码:
 applicationContext = ContextLoader.getCurrentWebApplicationContext();
1: Object object = applicationContext.getBean("roleService");
2:RoleServiceImpl roleService = (RoleServiceImpl)applicationContext.getBean("roleService");

运行到第一步的时候没问题可以找到名字为:roleService的bean;
到第二部时就出错了:
java.lang.ClassCastException: $Proxy3 cannot be cast to cn.edu.sjtu.telecom.scada.service.impl.RoleServiceImpl

如果不能强转得话,我得到这个bean就没什么意义了。

这时什么原因呢,如何可以转化为我想要的bean?


------解决方案--------------------
Java code

// print
object.getClass();

------解决方案--------------------
针对接口的实现类或者类的子类
转换为接口或者父类来使用 代理的过程可以参考下以前写的篇文章跟动态代理有关系的
http://blog.csdn.net/zhouyuqwert/article/details/6827964
------解决方案--------------------
你看看bean的name为roleService对应的class类型是否是RoleServiceImpl,不是的话应该就没法转了!虽然返回的是object但是他本质应该是RoleServiceImpl。