花2不谢

菜鸟的学习之路~

com.sun.proxy.$Proxy25 cannot be cast to com.levi.service.impl.ProductServiceImpl和proxy-target-class

刚刚写一个项目的时候出现了一个错误 com.sun.proxy.$Proxy25 cannot be cast to com.levi.service.impl.ProductServiceImpl,之前报错的代码为:

ProductServiceImpl p=(ProductServiceImpl) applicationContext.getBean("productService");
上面的ProductServiceImpl类是一个实现的ProductService接口的。利用spring ioc获取这个productService  bean的时候,不能转换为ProductServiceImpl,而只能转为它的父接口ProductService。查了很多资料,发现是Spring AOP的一个配置文件问题。proxy-target-class这个参数。将spring配置文件改为下面就行了:

   <!-- 配置事务切面 -->  
    <aop:config proxy-target-class="true">  
        <aop:pointcut id="serviceOperation"  
            expression="execution(* com.levi.service..*.*(..))" />  
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />  
    </aop:config>  
  
   <!-- 自动扫描加载构建bean -->  
    <context:component-scan base-package="com.levi" />  
proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代理将起作用。



阅读更多
版权声明:版权是什么东西,看得上的随便转。 https://blog.csdn.net/qq_25821067/article/details/52347533
文章标签: java proxy-target-class
个人分类: 错误相关
上一篇Java @override报错的解决方法
下一篇最简单的验证码(利用JSP生成验证码)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭