You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SpringBoot 2.0.0.RELEASE中用WebMvcConfigurer配置拦截器?

解析Spring Boot 2.0.0.RELEASE中自定义HandlerInterceptor的配置示例

这个示例完美展示了Spring Boot 2.x版本里自定义拦截器的标准配置方式,我来逐部分拆解给你看:

1. 配置类:MyMvcConfig

这是一个标注了@Configuration的配置类,它实现了WebMvcConfigurer接口——这个接口是Spring MVC提供的WebMvc配置器,专门用来定制Spring MVC的各种行为,比如添加拦截器、视图解析器、消息转换器等。

核心方法:addInterceptors

重写addInterceptors方法是注册拦截器的关键,方法参数InterceptorRegistry拦截器注册表,我们通过它来添加自定义拦截器并配置拦截规则:

@Configuration
public class MyMvcConfig implements WebMvcConfigurer{
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TestHandlerInterceptors()).addPathPatterns("/**");
    }
}

这里的关键调用细节:

  • addInterceptor(new TestHandlerInterceptors()):把我们自定义的拦截器实例添加到注册表中
  • addPathPatterns("/**"):配置拦截路径,/**表示拦截所有请求路径

2. 自定义拦截器:TestHandlerInterceptors

这个类实现了HandlerInterceptor接口——这是Spring MVC的处理器拦截器接口,它提供了三个核心方法(示例里只展示了preHandle),用来在请求处理的不同阶段插入自定义逻辑:

public class TestHandlerInterceptors implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 这里写请求到达控制器之前的逻辑,比如权限校验、请求日志记录
        // 返回true表示放行请求,返回false则直接中断请求流程
        return true;
    }
    
    // 另外还有两个可选重写的方法:
    // postHandle:控制器处理完请求后、视图渲染前执行,可用来修改模型数据
    // afterCompletion:视图渲染完成后执行(无论请求是否成功),适合做资源清理
}

额外小技巧

如果需要排除某些路径不被拦截,可以调用excludePathPatterns()方法,比如放行登录接口和静态资源:

registry.addInterceptor(new TestHandlerInterceptors())
        .addPathPatterns("/**")
        .excludePathPatterns("/login", "/css/**", "/js/**");

内容的提问来源于stack exchange,提问作者H.jw

火山引擎 最新活动