在使用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>

最新文章

  1. react+redux教程(五)异步、单一state树结构、componentWillReceiveProps
  2. ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发
  3. 【架构】Google的大规模集群管理工具Borg
  4. 深入浅出Mybatis系列(一)---Mybatis入门
  5. 了解linux内存管理机制(转)
  6. 从一个action地址获取信息
  7. svn截图
  8. iOS开发 判断用户是否开启了定位
  9. mysql 加入�列,改动列,删除列。
  10. usb键鼠标驱动分析
  11. map遍历的四种方式
  12. BI过程简述
  13. linux下将eclipse项目转换为gradle项目
  14. Python爬虫爬取豆瓣读书
  15. vue——loading组件
  16. Centos 7.3 安装Grafana 6.0
  17. 【剑指offer】合并有序链表
  18. Cracking The Coding Interview5.1
  19. 几种always块的形态
  20. centos7 安装svn, 同时支持 svn 和 http访问

热门文章

  1. 设置RichTextBox控件的文本的对齐方式
  2. 2017.12.10 Java写一个杨辉三角(二维数组的应用)
  3. Linux 的歷史
  4. windows下编辑器Emacs的安装与配置
  5. Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
  6. java面向对象思想1
  7. 1048: [HAOI2007]分割矩阵
  8. 洛谷P1481 魔族密码(LIS)
  9. forEach 以及 IE兼容
  10. 绘制圆形 和 椭圆形:边圆形 imageellipse() 、 填充圆形imagefilledellipse()