springboot的四种拦截机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot的四种拦截机制相关的知识,希望对你有一定的参考价值。

参考技术A 当我们在某些情况下需要对客户端发送来的请求进行拦截分析的时候,就需要用到拦截机制,比如,我们需要对一个请求进行计时,又或者需要知道当前请求需要进入哪个控制器,哪一个方法,该请求的参数是什么等等场景下都需要用到拦截机制来处理。下面,我们来讲解一下SpringBoot的几种拦截方式以及如何使用它们来处理一定的场景需求。

过滤器(filter)

拦截器(interceptor)

全局异常处理器(ControllerAdvice)

切片(aspect)

如上图所示,当一个请求发送来的时候,filter在最外层,也最先拦截到请求,接下来就是interceptor,依次是ControllerAdvice(处理controller层异常)、aspect,最后才进入controller层去处理请求。相应的,当controller内部发生错误,抛出异常的时候,aspect最先接收到该异常,如果不对抛出的异常继续处理继续往外抛的话依次会抛到ControllerAdvice、interceptor、filter。
请求的顺序:从先到后经过 Filter > Interceptor > ControllerAdvice > Aspect – >Controller。

过滤器(filter)可以拦截发送请求的状态码以及信息,拦截器(interceptor)除了可以拦截filter可以拦截的,还可以得到当前请求进入了哪一个controller,以及映射到哪一个方法,切片(aspect),它具有上面的所有功能外,还可以得到当前请求的参数的值。全局异常处理器(ControllerAdvice)只是用于处理controller层抛出的异常

以上是关于springboot的四种拦截机制的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot系列教程web篇Servlet 注册的四种姿势

运行SpringBoot工程的四种方法

shiro进行权限控制的四种方式

Springboot 解决跨域的四种姿势

解决springboot2.6和swagger冲突的四种方法

Spring AOP 中 advice 的四种类型 before after throwing advice around