本人想用 AspectJ 方式实现拦截,配置都是采用注解的方式,但失败了,拦截不到?!
spring关于注解的配置如下:
AOP的拦截类如下:(刚开始execution写的是本人项目包的controller类,后来百度说什么controller比较特殊,要用下面这样子,结果还是不行。)
spring关于注解的配置如下:
AOP的拦截类如下:(刚开始execution写的是本人项目包的controller类,后来百度说什么controller比较特殊,要用下面这样子,结果还是不行。)
@Component @Aspect public class Interceptor { @Around("execution(* org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(..))") public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{ System.out.println("进入环绕通知"); Object object = pjp.proceed();//执行该方法 System.out.println("退出方法"); return object; } }
controller部分代码如下:
@Controller @RequestMapping("/student") public class UserController { @RequestMapping("/save.do") public void save(){ System.out.print("SUCCESS!"); } }
做试验的时候save()方法会执行,但是没有被 interceptor 拦截到,最后只输出”SUCCESS”
是注解配置错误还是什么……弄了一天都不知所以然,求搭救 。
解决方案
5
例子
http://codebrane.com/blog/2014/01/23/adding-authentication-to-spring-controller-methods-with-aspectj/
http://codebrane.com/blog/2014/01/23/adding-authentication-to-spring-controller-methods-with-aspectj/
10
你的Spring几个配置文件?注解配置加到mvc的配置文件里了吗?
25
包假如包含了全部的类,那你就扫描了两次而且注入了两套,MVC调用的那套Service是没有做事务的,你可以把扫描的包分开,让MVC只扫Controller,或直接在MVC的配置文件里面做事务配置。
试试看,也许有用。