Java. lang. ClassCastException: com. sun. proxy. $ Proxy * cannot be cast to *** solution, com. sun. proxy
Clinical manifestations:
Case:
Define proxy class:
@ Transactional @ Repositorypublic UserDaoImpl implements UserDao extends BaseDaoImpl {/* No interface is implemented */}
Get proxy class:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");UserDaoImpl userDaoImpl = (UserDaoImpl)ctx.getBean("userDaoImpl");
Error:
java.lang.ClassCastException: com.sun.proxy.$Proxy12 cannot be cast to UserDaoImpl
Cause:
Spring AOP adopts two proxy Methods: JDK and CGLIB, and IUserDao. when at least one interface is implemented for contemporary rational objects, by default, JDK is used to dynamically create proxy objects. The CGLIB method is used when contemporary rational objects do not implement any interfaces. Click here for details >>>
Treatment methods
If your proxy object does not implement the interface method, convert the proxy object to the interface.
The code used to obtain the proxy class is as follows:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDaoImpl)ctx.getBean("userDaoImpl");