Code Bye

Spring AOP 拦截不到SpringMVC的Controller

本人想用 AspectJ 方式实现拦截,配置都是采用注解的方式,但失败了,拦截不到?!
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/

10

你的Spring几个配置文件?注解配置加到mvc的配置文件里了吗?

25

引用:
Quote: 引用:

你的Spring几个配置文件?注解配置加到mvc的配置文件里了吗?

两个配置文件,一个配置spring和hibernate的集成,一个配置springMVC,两个都有写
<context:annotation-config>
<context:conponent-san base-package=”包”>
<aop:aspectj-autoproxy /> 写在第一个里

包假如包含了全部的类,那你就扫描了两次而且注入了两套,MVC调用的那套Service是没有做事务的,你可以把扫描的包分开,让MVC只扫Controller,或直接在MVC的配置文件里面做事务配置。
试试看,也许有用。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring AOP 拦截不到SpringMVC的Controller