Spring Boot 基本

Spring Boot上でControllerAdviceアノテーションを利用したパラメータ変換処理を実装してみた

ControllerAdviceアノテーションを適用したクラス内で、InitBinderアノテーションを付与したメソッドを利用すると、そのメソッド内で指定したパラメータ変換処理を実装することができる。

今回は、Spring Boot上でControllerAdviceアノテーションを利用したパラメータ変換処理を実装してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

Spring Bootで全角チェック処理を行う独自アノテーションを作成してみたSpring Bootの独自アノテーションで、特定のフィールドに対するチェック処理も実装することができる。今回は、特定のフィールドの全角...

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

build.gradleの内容は以下の通りで、Apache Commons Langを利用するための設定を追加している。

また、DemoControllerAdviceの内容は以下の通りで、ControllerAdviceアノテーションを適用したクラスのInitBinderアノテーションを付与したメソッド内で、文字列の前後の空白を取り除きサニタイジングする処理(DemoStringConverter)を追加している。

さらに、DemoStringConverterの内容は以下の通りで、文字列の空白を取り除き、サニタイジングする処理を実装している。

なお、サニタイジングについては、以下のサイトを参照のこと。
https://cybersecurity-jp.com/security-measures/33684

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-controller-advice-initbinder/demo

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Spring Bootアプリケーションを起動し、「http://(サーバー名):(ポート番号)/」とアクセスし、任意のユーザーデータの入力画面を開き、以下のように、メモの先頭に空白文字を設定し「確認」ボタンを押下
サンプルプログラムの実行結果_1

2) 以下のように、確認画面に遷移し、メモの先頭の空白文字が削除されていることが確認できるので、「送信」ボタンを押下
サンプルプログラムの実行結果_2

3) 以下のように、完了画面に遷移することが確認できる
サンプルプログラムの実行結果_3

4) 変更後のデータを入力画面で確認すると、以下のように、確認画面に遷移し、メモの先頭の空白文字が削除されていることが確認できる
サンプルプログラムの実行結果_4

5) 任意のユーザーデータの入力画面を開き、以下のように、メモにサニタイジングが必要な文字を指定し「確認」ボタンを押下
サンプルプログラムの実行結果_5

6) 以下のように、確認画面に遷移し、サニタイジングにより、< ⇒ &lt; > ⇒ &gt; に変わっていることが確認できるので、「送信」ボタンを押下
サンプルプログラムの実行結果_6

7) 以下のように、完了画面に遷移することが確認できる
サンプルプログラムの実行結果_7

8) 変更後のデータを入力画面で確認すると、以下のように、確認画面に遷移し、サニタイジングにより、< ⇒ &lt; > ⇒ &gt; に変わっていることが確認できる
サンプルプログラムの実行結果_8

要点まとめ

  • ControllerAdviceアノテーションを適用したクラス内で、InitBinderアノテーションを付与したメソッドを利用すると、そのメソッド内で指定したパラメータ変換処理を実装することができる。