欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

spring aop 如何切面到mvc 的controller--转载

发布时间:2025/4/5 c/c++ 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 spring aop 如何切面到mvc 的controller--转载 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

原文:http://yjian84.iteye.com/blog/1920787

网上搜罗半天,不知道什么原因,看了源码,好像他们说的controller 是不受代理的,也对哈,不知道怎么办,于是在http://stackoverflow.com/questions/17834958/spring-aop-is-not-working-in-with-mvc-structure?rq=1 这个地方有个人说了: 

<context:component-scan base-package="com.dao" /> 
<mvc:annotation-driven/> 

<aop:aspectj-autoproxy />   
from application-context.xml to controller-servlet.xml? 

The aspects and the beans to be applied needs to be in the same ApplicationContext but ApplicationContext is not aware of WebApplicationContext . 


Indeed your controller (annotated by @Controller) and your aspects (annotated by @Aspect) should be in the same Spring context. 

Usually people define their controllers in the dispatch-servlet.xml or xxx-servlet.xml and their service beans (including the aspects) in the main applicationContext.xml. It will not work. 

When Spring initializes the MVC context, it will create a proxy for your controller but if your aspects are not in the same context, Spring will not create interceptors for them. 


这个人说的好像很对啊。我把aspectj 和springmvc的配置文件放到一起就可以用到controller上了。 

spring-mvc.xml 

<context:component-scan base-package="com.cms.controller" /><context:component-scan base-package="com.cms.aspectj" /><!-- <bean id="sysLogAspectJ" class="com.cms.aspectj.SysLogAspectJ" /> --><aop:aspectj-autoproxy proxy-target-class="true"><!-- <aop:include name="sysLogAspectJ" /> --></aop:aspectj-autoproxy><!-- <mvc:annotation-driven /> --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> package com.cms.aspectj;import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component;@Component @Aspect public class SysLogAspectJ {@Pointcut("within(@org.springframework.stereotype.Controller *)")public void cutController(){}@Around("cutController()")public Object recordSysLog(ProceedingJoinPoint point) throws Throwable{System.out.println("lfkdjj================================================================");return point.proceed();}}

 

转载于:https://www.cnblogs.com/davidwang456/p/4121765.html

总结

以上是生活随笔为你收集整理的spring aop 如何切面到mvc 的controller--转载的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。