今天在已有项目中开发一个spring面向切面的功能,发现切面在Controller中不生效,经查,是由于把aop:aspectj-autoproxy配置在了applicationContext.xml配置文件中了。如果需要切面在Controller中生效,需要在mvc.xml配置文件中增加aop:aspectj-autoproxy proxy-target-class=”true”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import java.lang.annotation.*;
/** * * */
public
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
* @auth zhengzhi.ren * @date 2015/8/10. */ @Component @Aspect public class LoginCheckAspect{
@Pointcut("@annotation(com.xxx.LoginRequired)") public void annotation (){}
@Before("annotation ()") public void before(JoinPoint joinPoint) throws Throwable{ System.out.println("....."); } }
|
spring mvc.xml配置文件中增加:
1
| <aop:aspectj-autoproxy proxy-target-class="true"/>
|