spring aop配置

有妳很满促 发布于 2015/03/04 09:07
阅读 211
收藏 0

 使用spring aop 配置如下

 <aop:aspect ref="aopCommon">

        <!-- 局部切点 -->
 <aop:pointcut expression="execution(* com.neunn.apps.download.DownLoadController.*(..))"               id="partial"/>
     <aop:before method="aspect" pointcut-ref="partial"/>
   </aop:aspect>

其实配置很简单,如果将切点配置service里面的某个方法就好用,但是我现在配置的controller里面的某个方法,但是aop就没有起到作用。

我在一个博客中看到这篇文章

 我对Spring的MVC并不是很熟,不过刚才仔细看了一下源码,我觉得应该之所以Spring的AOP没有对Controller应用成功的原因是:Spring MVC在启动的时候会根据处理器策略加载handler映射到一个map中,这个时候因为配置的原因它从容器中取到的对象是原生对象,而不是我们代理的对象;所以不管我们的Controller做了什么操作都不会经过我们的代理,这样AOP就失去了作用;获取handler的方法应该是DefaultListableBeanFactory的getBeanNamesForType方法;这是我自己在查看源码后总结出来的,如果有什么不对的地方大家讨论下;



我没有研究看源码,不知道他说的对不对,请大神指教。


这篇文章我还有个疑问,容器启动后为什么service里面的方法就可以拿到代理对象,而controller不行呢

加载中
返回顶部
顶部