Spring aop报错:com.sun.proxy.$Proxyxxx cannot be cast to yyy
2024-09-08 07:55:21
在使用Spring AOP时,遇到如下的错误:
Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to com.spring.test.setter.Instrumentalist
at com.spring.test.setter.test.main(test.java:12)
看报错信息,显示的是动态代理生成的类无法转换到我们自定义的实现类。
解决办法:
在aop:config标签中添加 proxy-target-class="true" 即可。
【解释说明】
按照博客的说法:http://blog.csdn.net/z69183787/article/details/17161297
由于生成代理类有两种方式:JDK和CGLIB,一种是基于接口的,一种是基于类的。
如果添加上面的属性则使用基于类的cglib的方式,相反,如果没有写或者是false则通过jdk的基于接口的方式生成代理类。
当然,如果本身不是基于接口的,那么会自动使用cglib的方式,在这里很奇怪为什么没有自动走cglib的方式。
个中缘由,还得去看aop的源码,这里先做下记录。
下面是我自己的spring配置文件,仅供参考
<aop:config proxy-target-class="true">
<aop:aspect ref="audience">
<aop:before pointcut="execution(* com.spring.test.action1.Performer.perform(..))"
method="takeSeats"/>
<aop:before pointcut="execution(* com.spring.test.action1.Performer.perform(..))"
method="turnOffCellPhones"/>
<aop:after-returning pointcut="execution(* com.spring.test.action1.Performer.perform(..))"
method="applaud"/>
<aop:after-throwing pointcut="execution(* com.spring.test.action1.Performer.perform(..))"
method="demandRefund"/>
</aop:aspect>
</aop:config>
最新文章
- react+redux教程(五)异步、单一state树结构、componentWillReceiveProps
- ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发
- 【架构】Google的大规模集群管理工具Borg
- 深入浅出Mybatis系列(一)---Mybatis入门
- 了解linux内存管理机制(转)
- 从一个action地址获取信息
- svn截图
- iOS开发 判断用户是否开启了定位
- mysql 加入�列,改动列,删除列。
- usb键鼠标驱动分析
- map遍历的四种方式
- BI过程简述
- linux下将eclipse项目转换为gradle项目
- Python爬虫爬取豆瓣读书
- vue——loading组件
- Centos 7.3 安装Grafana 6.0
- 【剑指offer】合并有序链表
- Cracking The Coding Interview5.1
- 几种always块的形态
- centos7 安装svn, 同时支持 svn 和 http访问
热门文章
- 设置RichTextBox控件的文本的对齐方式
- 2017.12.10 Java写一个杨辉三角(二维数组的应用)
- Linux 的歷史
- windows下编辑器Emacs的安装与配置
- Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
- java面向对象思想1
- 1048: [HAOI2007]分割矩阵
- 洛谷P1481 魔族密码(LIS)
- forEach 以及 IE兼容
- 绘制圆形 和 椭圆形:边圆形 imageellipse() 、 填充圆形imagefilledellipse()