DI/AOP

AOPで独自アノテーションの有無を判定してみた

今回は、クラスとメソッドに付与できる独自アノテーションを作成し、そのアノテーションが付与されているかどうかを判定する処理をAspectクラスで実装してみたので、そのサンプルプログラムを共有する。

前提条件

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

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...

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

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

独自アノテーションのプログラムの内容は以下の通りで、クラスとメソッドにこのアノテーションを付与できるようになっている。

また、このアノテーションがクラスやメソッドに付与されているかどうかを取得する処理は、以下のAspectクラスで実装している。



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

さらに、application.propertiesの内容は以下の通りで、ログ出力の設定を追加している。

また、コントローラクラスの内容は以下の通りで、独自アノテーションをクラスと一部メソッドに追加している。

その他、HTMLファイルの内容は以下の通り。

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

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

1) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下の画面が表示される
サンプルプログラムの実行結果_1

2) この画面で「メソッドのアノテーションが有る場合」ボタンを押下すると、画面遷移はしないが、ログでクラス・メソッドともアノテーションが有る旨が表示される
サンプルプログラムの実行結果_2_1

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

3) さらに、この画面で「メソッドのアノテーションが無い場合」ボタンを押下すると、画面遷移はしないが、ログでメソッドのアノテーションが無い旨が表示される
サンプルプログラムの実行結果_3_1

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

要点まとめ

  • Aspectクラスで、クラスまたはメソッドのgetAnnotationメソッドを利用することで、特定のアノテーションの有無を判定することができる。