SpringBoot拦截器详解(定义作用及使用示例)

SpringBoot拦截器详解(定义作用及使用示例)-mikechen

SpringBoot拦截器定义

Spring Boot 拦截器是在请求处理过程中用于拦截请求并执行某些操作的组件,类似于 Servlet 开发中的过滤器Filter。

 

SpringBoot拦截器作用

SpringBoot拦截器通常用于对:登录状态、权限验证、日志记录等方面的处理,通过拦截器可以对请求进行统一的处理。

 

SpringBoot拦截器使用示例

1.创建拦截器类

首先,创建一个实现了 HandlerInterceptor 接口的拦截器类。

@Component
public class MyInterceptor implements HandlerInterceptor {
 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       System.out.println("执行了logininterceptor的preHandle方法");
        return true;
    }
}

该接口有三个方法:

  • preHandle:在请求处理之前进行调用;
  • postHandle:请求处理之后进行调用,但在视图被渲染之前;
  • afterCompletion:在整个请求处理完毕之后调用,即在视图渲染完毕后。

示例如下:

public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在请求处理之前进行拦截处理
        // 可以进行登录状态、权限验证等操作
        return true; // 返回 true 表示放行,返回 false 表示拦截请求
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在请求处理之后进行拦截处理
        // 可以对返回结果进行统一的处理
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在请求完成之后进行拦截处理
        // 可以进行资源释放等操作
    }
}

分别对请求进行了前置、后置和完成后的拦截处理。

 

2.注册拦截器

在 Spring Boot 中,我们可以通过 WebMvcConfigurer 接口的 addInterceptors 方法来注册拦截器。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
 
    @Autowired
    MyInterceptor myInterceptor;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor);
    }
}

 

3.测试拦截器

现在,我们可以启动应用程序并尝试访问一些 URL,以测试我们的拦截器是否正常工作。

以上就是SpringBoot拦截器详解,更多SpringBoot请查看:SpringBoot框架(万字图文全面详解)

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法