Spring MVC

Spring MVCでAOPを利用してみた

今回は、Spring MVC上のサンプルプログラムで、AOP(Aspect Oriented Programming、アスペクト指向プログラミング)でログ出力する処理を追加してみたので、そのサンプルプログラムを共有する。

前提条件

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

Spring MVCでMyBatisによるOracle連携処理を実装してみた今回は、Spring MVC上で、MyBatisによるOracle連携処理を行うプログラムを作成してみたので、そのサンプルプログラムを共...

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

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

pom.xmlに追加した内容は以下の通りで、AOPの実装に必要なライブラリを追加している。



また、servlet-context.xmlの内容は以下の通りで、先頭のbeans:beansタグにAOPの名前空間を追加すると共に、aop:aspectj-autoproxyタグを追加している。



さらに、ログ出力するAOPのクラスは以下の通りで、Spring Bootの場合と同じように@Aspectアノテーション等を利用していて、コントローラクラスの呼出前後にログを出力する仕組みになっている。

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

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

サンプルプログラムを実行したときの画面・ログの内容は、以下の通り。

1) サーバーを起動後、Webブラウザ上で「http://(サーバー名):(ポート番号)/(プロジェクト名)/」とアクセスすると、以下の画面が表示されるので、「検索」ボタンを押下
サンプルプログラムの実行結果_1

2) 以下の一覧画面が表示される。
サンプルプログラムの実行結果_2

3) このときのコンソールログは以下の通りで、下記赤枠のログがDemoInvocation.javaによって出力されることが確認できる。
サンプルプログラムの実行結果_3

要点まとめ

  • Spring MVCプロジェクトでAOPを利用するには、AOP接続に必要なライブラリ(spring-context, spring-aop, aspectjweaver, cglib)を追加し、servlet-context.xmlに、先頭のbeans:beansタグにAOPの名前空間を追加すると共に、aop:aspectj-autoproxyタグを追加する必要がある。