TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码

Spring Boot注册拦截器Interceptor

Laughing博主
2021-06-07
/
1 评论
/
1,090 阅读
/
379 个字
/
百度已收录
06/07
本文最后更新于2024年03月17日,已超过187天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

Spring MVC提供了AOP风格的拦截器,拥有更加精细的拦截器处理能力。Spring Boot中拦截器的注册更加方便,步骤如下:

  1. spring-boot-starter-web
  2. 创建拦截器,实现HandlerInterceptor
  3. 配置拦截器,定义配置类进行拦截器的配置

增加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

实现HandlerInterceptor

代码如下:

public class MyInterceptor implements HandlerInterceptor {

    private final Logger logger = LoggerFactory.getLogger(MyInterceptor.class);

    /**
     * 方法执行前运行
     * 必须返回true,后面的方法才能执行
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.info("我先执行");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        logger.info("我在controller方法之后执行");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        logger.info("我最后执行");
    }
}

配置拦截器

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {

    /**
     * 拦截器
     *
     * @param registry registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor())
                //配置拦截的路由
                .addPathPatterns("/interceptor/**")
                //配置不拦截的路由
                .excludePathPatterns("/demo/**")
                //配置顺序
                .order(1);
    }
}

测试

定义controller测试我们的拦截器

@RestController
@RequestMapping("interceptor")
public class InterceptorController {

    private final Logger logger = LoggerFactory.getLogger(InterceptorController.class);

    @GetMapping("/test")
    public String testInterceptor(){
        logger.info("我是controller方法");
        return "success";
    }
}

通过调用http://localhost:8080/interceptor/test查看输出日志。

温馨提示
  • 拦截器按照preHandle→Controller→postHandle→afterHandle的顺序执行。
  • 只有preHandle方法返回true时,后面的方法才会执行。
  • 当拦截器链内存在多个拦截器时,postHandle在拦截器链内所有拦截器返回成功时才会调用。
  • 当拦截器链内存在多个拦截器时,afterHandle在拦截器链内所有拦截器返回true时才会调用。
  • 当拦截器链内存在多个拦截器时,如果第一个拦截器的preHandle方法返回false,则后面的方法都不会执行。
  • 调用controller方法时,只要配置了拦截的路由,哪怕前端请求404,仍然会调用preHandle、postHandle及afterHandle的方法。

如果我们设置了order,代码如下:

/**
     * 拦截器
     *
     * @param registry registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor2())
                //配置拦截的路由
                .addPathPatterns("/interceptor/**")
                //配置不拦截的路由
                .excludePathPatterns("/demo/**")
                //配置顺序
                .order(200);
        registry.addInterceptor(new MyInterceptor1())
                //配置拦截的路由
                .addPathPatterns("/interceptor/**")
                //配置不拦截的路由
                .excludePathPatterns("/demo/**")
                //配置顺序
                .order(300);
    }
拦截器Spring Boot
朗读
赞(1)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

香草物语

本文链接:

https://www.xiangcaowuyu.net/java/spring-boot-register-interceptor.html(转载时请注明本文出处及文章链接)

评论 (1)
  1. 23424 闲逛
    Windows 10 · Google Chrome

    {!{data:image/webp;base64,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}!}

    2021-06-08 回复
  2. 穆伊扎 闲逛
    iPhone · Safari

    不错,学习了

    2017-06-14 回复