Spring Boot 8 リクエスト, レスポンスのログ出し
SpringBootのログ出しについてです。
以前書いたAOPのログ出しですが、 メソッドのIn,Outについての出力です。
WebAPIではリクエスト,レスポンスも出力出来たほうが良いと思います。
そこで、Controlerの前後に実行されるInterceptorを実装します。
HandlerInterceptorインターフェイスを実装したクラスを作成します。
オーバライドするメソッドは以下の3点です。
- preHandle
- Controllerの呼び出し前に呼び出されます。
- 返り値がTrue出ないとControllerが呼び出されなくなります。
- postHandle
- Controllerの後、Viewの描画前に呼び出されます。
- afterCompletion
- Controllerの後、Viewの描画後に呼び出されます。
実装したInterceptorをDIコンテナに対して登録します。
MappedInterceptorの第1引数は対象のパターン(nullで全てを対象に取る)、第2引数は除外するパターン、第3引数が先ほど実装したクラスです。
今回はjsやhtmlと言った静的コンテンツを除外しています。
また、以前のAOPによる差し込み対象に、今回実装したクラスが含まれていると動作しなくなるため、AOPのログ出し対象から除外するようにします。
対象のパッケージを狭め、実装したInterceptorを含まれないパッケージに格納します。
実行結果は以下のようになります。
今回はログ出しに利用しましたが、本来は共通処理に使用するもののようです。