<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 /> -->
- <bean
- class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
- <bean
- class="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();
- }
- }