1. ホーム
  2. java

[解決済み] Spring Boot Httpリクエストインターセプターの追加

2022-07-05 12:09:21

質問

Spring BootアプリケーションでHttpRequestインターセプターを追加する正しい方法は何ですか?私は何をしたいのか、すべてのhttpリクエストのリクエストとレスポンスをログに記録します。

Spring bootのドキュメントでは、このトピックをまったくカバーしていません。( http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ )

古いバージョンのspringで同じことをする方法についていくつかのWebサンプルを見つけましたが、それらはapplicationcontext.xmlで動作します。助けてください。

どのように解決するのですか?

Spring Bootを使っているので、可能な限りSpringの自動設定に頼りたいのだと思います。インターセプターのようなカスタム設定を追加する場合は WebMvcConfigurerAdapter .

コンフィグクラスの例です。

@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() {
        ...
    });
  }
}

注意 を維持したい場合は、@EnableWebMvc のアノテーションを付けないでください。 mvcのSpring Boots自動構成 .