本ブログにはプロモーションが含まれております。

Java

HandlerInterceptorAdapterは非推奨なのでこちらを使うこと

スポンサーリンク

Spring Bootで共通処理を行おうと思うと、HandlerInterceptorAdapterを使うように書かれたサイトがヒットします。

しかし、HandlerInterceptorAdapterは現在非推奨となっています(2020年10月)。

そのため、代わりにHandlerInterceptor.javaを使うようにしましょう。

今回は、非推奨のクラスやメソッドを使うリスクと、Adapterとの違いをお伝えします。

非推奨のクラスやメソッドを使うリスク

非推奨のクラスやメソッドを使うと、1本の打消し線が引かれ、警告が出ます。

警告状態でもそのまま使い続けることはできますし、@deprecatedアノテーションを付けて非推奨警告を出さないようにすることさえできます。

しかし、基本的に非推奨のクラスやメソッドは使わないようにしましょう。

それは、以下のような理由で非推奨になることがほとんどだからです。

  • 動作が安全ではない
  • 将来廃止される可能性がある
  • 上位互換のクラスやメソッドが用意されている

HandlerInterceptorの使い方

それでは、HandlerInterceptorAdapterの代わりに使うHandlerInterceptorの使い方を見ていきます。まずはコードを見ます。

@Component 
public class HogeHogeHandlerInterceptor implements HandlerInterceptor { 
  @Override
  public boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object Handler) throws Exception { 
    //コントローラー前に行いたい共通処理を書く。 
  
    reture true; 
    //true: コントローラへ。false: コントローラーへ行かせない。 
  } 
  
  @Override
  public void postHandle (HttpServletRequest request, HttpServletResponse response, Object Handler) throws Exception { 
    //コントローラー後に行いたい共通処理を書く。 
  } 
  
  @Override
  public void AfterCompletion (HttpServletRequest request, HttpServletResponse response, Object Handler) throws Exception {
    //リクエストの後に行いたい共通処理を書く。 
  } 
}

HandlerInterceptorAdapterとの違い

非推奨となったAdapterとの違いですが、動作に違いはありません。

1つ大きく違うのは、HandlerInterceptorAdapterは継承(extends)だったのに対し、HandlerInterceptorは実装(implements)である点です。

Configurationクラスも必要

HandlerInterceptorの実装クラスを使用するためには、Configurationクラスを定義する必要があります。以下のようなクラスを作成します。

@Configuration 
public class WebMvcConfiguration implements WebMvcConfigurer { 
  @Autowired 
  private HogeHogeHandlerInterceptor hogeHogeHandlerInterceptor; 
  
  @Override 
  public void addInterceptors(InterceptorRegistry registry) { 
    registry.addInterceptor(hogeHogeHandlerInterceptor) 
            .addPathPatterns("/") 
            .addPathPatterns("/start") 
            .addPathPatterns("/test"); 
 
    //上記のパスへのリクエストのときだけ、hogehogeHandlerInterceptorが実行される。 
    //.excludePathPatterns("/"); // 除外もある。 
  } 
}

 

まとめ

HandlerIntereptorAdapterの代わりのHandlerInerceptorの使い方をお伝えしました。

非推奨のメソッドはなるべく使わないように意識したいところです。

同時にConfigurationファイルを作成することを忘れないでくださいね。

最後までお読みいただきありがとうございました。

スポンサーリンク

-Java
-, ,

© 2024 教職志望だった文系エンジニア Powered by AFFINGER5