Spring Boot DI/AOP

AOPでコントローラメソッド呼出前にエラー画面に遷移してみた

AOPのAroundアノテーションを利用すると、AOP呼出対象のコントローラクラスのメソッド呼出前に、エラー画面に遷移する処理を呼び出すことができる。今回は、そのサンプルプログラムを作成してみたので、共有する。

前提条件

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

Spring BootでAOPを利用してみたSpringフレームワークの基本として、AOP(Aspect Oriented Programming)という概念がある。 AOP...

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

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

コントローラクラスの内容は以下の通りで、初期表示画面とエラー画面に遷移する処理になっている。



また、AOPを利用したクラスの内容は以下の通りで、エラーフラグが設定されている場合は、AOP呼出対象のコントローラクラスのメソッド呼出前にエラー画面に遷移する処理を追加している。

さらに、初期表示画面、エラー画面のHTMLは以下の通り。

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



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

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

1) 以下のように、エラー発生を判定するフラグをfalseに変更する。
サンプルプログラムの実行結果_1

2) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下のように、初期表示画面が表示されることが確認できる。
サンプルプログラムの実行結果_2

3) このときのコンソールログの出力結果は以下の通りで、コントローラクラスのindexメソッドを呼び出した際、AOPを利用したクラスのwriteLogメソッドが最後まで実行されたことが確認できる。
サンプルプログラムの実行結果_3

4) 次に、以下のように、エラー発生を判定するフラグをtrueに変更する。
サンプルプログラムの実行結果_4

5) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下のように、エラー画面が表示されることが確認できる。
サンプルプログラムの実行結果_5

6) このときのコンソールログの出力結果は以下の通りで、コントローラクラスのindexメソッドを呼び出した際、AOPを利用したクラスのwriteLogメソッド内で、コントローラクラスのtoErrorメソッドを呼び出していることが確認できる。
サンプルプログラムの実行結果_6

要点まとめ

  • AOPのAroundアノテーションを利用すると、AOP呼出対象のコントローラクラスのメソッド呼出前に、エラー画面に遷移する処理を呼び出すことができる。