`
usherlight
  • 浏览: 31087 次
文章分类
社区版块
存档分类
最新评论

正确配置spring aop,在controller中使用AOP

阅读更多
在controller中使用AOP的问题主要在于如何让controller能够被检测到。
controller和其他spring bean的区别在于:controller是由mvc定义并在web.xml中的dispatcher中定义的。

解决方法:
1、正确定义controller,(比较通用的做法,没有特殊情况的话,大部分应用没有这个问题)
    a. 将服务层的类都放在ApplicationCotext-*.xml中定义,在context listener中初始化(注意,任何controller都不应该在这里出现),要包括<aop:aspectj-autoproxy/>, 在这里,有没有proxy-target-class="true" 没有关系(具体含义参看下文)
    b. 定义mvc的配置文件,一般是 <<servlet name>>-servlet.xml,一般(也是推荐做法)使用auto scan来定义所有的controller.关键步骤来了:这个文件也要加入<aop:aspectj-autoproxy proxy-target-class="true"/>, 一定要添加proxy-target-class="true"! 这是用于通知spring使用cglib而不是jdk的来生成代理方法。
    c. 另外一个事项,controller需要使用@controller注释,而不是继承abstract controller。
    d. 建议使用aspectj来完成aop



分享到:
评论
6 楼 sunyunjie361 2016-06-21  
   折腾了半天,看了帖子一下解决了,多谢
5 楼 chendejia2012 2016-02-05  
必须赞一个,折腾了一天,看到该帖子,问题迎刃而解。
4 楼 yangbo215501 2014-11-11  
必须赞一个,短短几行字,道出了spring-aop的真谛!!!!
3 楼 aopha 2013-10-29  

最近在配Simple-Spring-Memcached,@Test都没有问题,一部署到tomcat就不行,查了很久,原来是这个原因。谢谢
2 楼 aye_love 2012-06-05  
spring3.1 mvc+mybatis的事物也不起作用 LZ有什么好的解决办法吗
1 楼 java_adult 2012-01-04  
请问你QQ?我配置了controller,aop还是不起做用,在网上查的,说是controller不支持aop,能加QQ聊下吗?我的是66300211,

相关推荐

Global site tag (gtag.js) - Google Analytics