栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot接口开发框架——拦截器注册

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot接口开发框架——拦截器注册

拦截器注册
  • 定义拦截器
  • 注册拦截器
  • 加载配置类

定义拦截器

首先定义一个拦截器,重写请求处理前和处理后会被执行的方法

public class UserHeaderIntercepter implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    UserHeader userHeader = UserHeader.builder()
            .userId(request.getHeader("userId"))
            .version(request.getHeader("version"))
            .build();
    UserHeaderHodler.threadLocal.set(userHeader);
    return HandlerInterceptor.super.preHandle(request, response, handler);
  }

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    UserHeaderHodler.threadLocal.remove();
    HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
  }
}
注册拦截器
@Configuration
public class WebConfig implements WebMvcConfigurer {

  @Bean
  public UserHeaderIntercepter userHeaderIntercepter() {
    return new UserHeaderIntercepter();
  }

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(userHeaderIntercepter());
    WebMvcConfigurer.super.addInterceptors(registry);
  }
}

被@Configuration注解修饰的类为配置类,在springboot项目启动的时候会被自动加载
但是只有配置类存在于当前moduel才会被加载

因为我们的拦截器定义为一个公共的moduel,其他moduel想要使用必须通过其他方式才能加载成功

加载配置类

想要加载成功,需要在resource文件下创建如下文件:

这样在其他moduel启动的时候就会自动加载这个文件

EnableAutoConfiguration翻译过来就是自动配置的意思

这其实是springboot实现自动化配置的核心技术

观察springboot各种starter也是根据这种方式实现了

springboot之所以不需要开发者像springmvc一样配置很多额外的信息,就是因为springboot在各种@Configuration修饰的类中完成了这些配置

github demo 地址

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号