Spring Boot でHandler Intercepterを実装してlog4jでリクエストURLを出力する

▼この記事をSNSでシェアする▼

スポンサーリンク

スポンサーリンク

10連休初日は家で

俺ガイル2期をみてます。

コントローラ処理を共通化する

コントローラに毎回同じ前処理・後処理を書くのは、開発の効率性の面でも実装のわかりやすさの面でもあまり良くない。

ということでいろんなコントローラに共通する前処理などがあれば、Intercepterを使って実装するのが良さそうだと知ったので、今回コントローラが呼び出されるたびに、URLを出力してくれるIntercepterの実装試してみました。

実用的な実装だと、ログイン認証に関する前処理や後処理を実装するのが良いのかとは思うのですが、サンプルアプリにログイン機能を用意するのがめんどいのでやめました。

Handler Intercepterの実装

ネットで調べていると、Spring BootでHandlerInterceptorでコントローラの処理を共通化するにはこんな感じでやるのが良さそうだとわかったので以下の手順で試してみた。

  1. HandlerInterceptorを実装したクラスを作成する
  2. 1のクラスにpreHandle(コントローラ実行前の処理)、posthandle(コントローラ実行後の処理、ビューレンダリング前の処理)、afterCompletion(ビューレンダリング後の処理)を記述する
  3. @SpringBootApplicationがついた標準のクラスに、MappedInterceptorをbeanとしてDIする設定を書く

今回はlog4jを使って、2の3段階の処理でログを出力し、簡単に実装を確認したいと思います。

ソース

LogIntercepter.java

DemoApplication.java

ログ出力

ローカルでSpring Boot のアプリケーションを起動し、localhost:8080/sample4にアクセスすると、ログにそのパス(/sample4)がログに出力されています。

まとめ

今回の実装は下のプルリクでも、確認できます。

実装のURL

https://github.com/Tonbi00080/spboot/pull/17

合わせて読みたい

スポンサーリンク


関連記事

▼この記事をSNSでシェアする▼

フォローする

メニュー・主な記事カテゴリ

おすすめ特集!




「ゆとり鳥日記」について
ITを中心に関心の赴くままに好きなように書いていく雑記ブログ!管理人が二人います。
◆フクロウ(ITコンサル)
◆santaka(SE)

詳しいプロフィール
お仕事の依頼・ご要望

ゆとり鳥日記をBTCで応援する