SpringMVC中对Controller使用AOP
2015-08-04 09:40
615 查看
转自http://usherlight.iteye.com/blog/1306111
正确配置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
正确配置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
相关文章推荐
- java执行顺序
- ireport5.6使用table组件,如何用table显示javaBean数据源
- struts2简记
- java实现文件的上传下载
- JavaWeb实现文件上传下载功能实例解析
- MyEclipse 2015 反编译插件安装
- 算法之动态规划初步(Java版)
- Java设计模式—观察者模式
- 算法之动态规划初步(Java版)
- eclipse cannot be created
- Eclipse常用快捷键大全
- java.lang.IllegalArgumentException:pointerIndex out of range问题的两种解决办法
- Java设计模式(五) 之 工厂模式
- Java删除ArrayList中的重复元素的2种方法
- Java设计模式(四) 之 模板方法模式
- 『Spring.NET+NHibernate+泛型』框架搭建之BLL(四)
- Java设计模式(二) 之 迭代器模式
- 在IDEA下创建新项目时出现Error:Cannot determine Java VM executable in selected JDK错误
- 【Java并发编程实战】-----synchronized
- Java数组与泛型