谈谈对Spring的拦截机制

 

如图所示
一个请求打进来的拦截顺序:过滤器->拦截器->全局异常捕获->AOP
controller抛异常时的拦截顺序:AOP->全局异常捕获->拦截器->过滤器


验证结果(局部验证,controller抛异常时,看看是现走全局异常捕获还是AOP):
controller:

@RestController
@RequestMapping(value = "/person")
public class CheckUser {

    @PostMapping(value="/checkK")
    public String checkU(@Valid @RequestBody LoginUser loginUser) throws Exception {
     //抛一个异常
     throw  new Exception();
        //TODO
    }
}

全局捕获异常:
 

@RestControllerAdvice
public class ExceptionAdivce {
    //全局
    @ResponseBody
    @ExceptionHandler(value= Exception.class)
    public Map erroHandle(Exception ex){
        Map map = new HashMap();
        map.put("message",ex.getMessage());
 System.out.println("全局捕获开始");
        return map;
    }
}


AOP:
 

@Aspect
@Component
public class TestAop {

    @Pointcut("execution(* com.syan.cloudbiz2.controller.impl..*.*(..))")
    public void test(){}

    @AfterThrowing(value="test()",throwing = "e")
    public void afterThrow(Throwable e){
        System.out.println("AOP校验开始");
    }
}

控制台结果:
AOP校验开始
全局捕获开始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值