Spring Boot 添加 Http 请求拦截器

新手上路,请多包涵

在 spring boot 应用程序中添加 HttpRequest 拦截器的正确方法是什么?我想要做的是记录每个 http 请求的请求和响应。

Spring Boot 文档根本没有涵盖这个主题。 ( http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ )

我找到了一些关于如何对旧版本的 spring 执行相同操作的 Web 示例,但这些示例适用于 applicationcontext.xml。请帮忙。

原文由 hrishikeshp19 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 769
2 个回答

由于您使用的是 Spring Boot,我假设您更愿意尽可能依赖 Spring 的自动配置。要添加其他自定义配置(如拦截器),只需提供 WebMvcConfigurerAdapter 的配置或 bean。

这是配置类的示例:

 @Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

  @Autowired
  HandlerInterceptor yourInjectedInterceptor;

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(...)
    ...
    registry.addInterceptor(getYourInterceptor());
    registry.addInterceptor(yourInjectedInterceptor);
    // next two should be avoid -- tightly coupled and not very testable
    registry.addInterceptor(new YourInterceptor());
    registry.addInterceptor(new HandlerInterceptor() {
        ...
    });
  }
}

注意,如果您想 为 mvc 保留 Spring Boots 自动配置, 请不要使用 @EnableWebMvc 对其进行注释。

原文由 ikumen 发布,翻译遵循 CC BY-SA 3.0 许可协议

WebMvcConfigurerAdapter 将在 Spring 5 中弃用。来自其 Javadoc

@deprecated as of 5.0 {@link WebMvcConfigurer} 具有默认方法(由 Java 8 基线实现)并且可以直接实现而不需要此适配器

如上所述,您应该做的是实施 WebMvcConfigurer 并覆盖 addInterceptors 方法。

 @Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyCustomInterceptor());
    }
}

原文由 sedooe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题