ページの作成

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレートを更新

14. SpringにおけるAOPの使い方

本稿ではSpring FrameworkにおけるAOP(Acpect Oriented Programming)の使用方法を説明します。

 

AOPとは

AOPとは共通的な処理をAOPクラスにまとめて、あるクラスの特定のメソッドの開始前や開始後にその共通的な処理を実行させることが出来る仕組みです。

 

AOPのライブラリをpom.xmlに記述する

AOPを使用するためにはライブラリが必要です。

以下を参考にpom.xmlに記載してビルドしましょう。※Spring Bootでない場合。Spring Bootの場合は後述。

<!-- AOP -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>
spring-aop</artifactId>
    <version>3.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>
aspectjweaver</artifactId>
    <version>1.8.13</version>
</dependency>
<dependency>
    <groupId>cglib</groupId>
        <artifactId>
cglib</artifactId>
        <version>3.2.6</version>
</dependency>

※注意※ spring-aopのバージョンを3.1以上にすると「AnnotationAwareAspectJAutoProxyCreator」が見つからないエラーが発生する。情報求む。

 

Spring Bootの場合は以下の記述のみでOK。

<!-- AOP -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-aop</artifactId>

</dependency>


 

AOPを使用する宣言

※Spring Bootの場合は不要

いくつか方法があるが、シンプルなものを紹介。

適当なコンフィグクラスを作成して以下の内容を記述する。(どこかしらのクラスでAOPを使用する宣言をする必要がある)

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Configuration
@ComponentScan("com.example.springmvc")
@EnableAspectJAutoProxy

public class AppConfig {

}

※@ComponentScanのパッケージ名は環境に合わせてください。

 

AOPクラスの作成

@Aspectアノテーションを付与すればAOPのクラスとして認識される。。

@Aspect
@Component
public class TestAOP {

    @Before("execution(* com.example.springmvc2.*.*(..))")
    public void before(JoinPoint joinPoint) {
        System.out.println("Method Start:"  +
joinPoint.getSignature());
    }

    @After("execution(* com.example.springmvc2.*.*(..))")
    public void after(JoinPoint joinPoint) {
        System.out.println("Method End:"  +
joinPoint.getSignature());
    }
}

@Beforeはメソッドが実行される前に処理を実行する。

@Afterはメソッドが実行された後に処理を実行する。

executeはAOPを実行する条件を指定できる。※詳しくは後述

JoinPointクラスのgetSignatureメソッドを使用すると、実行したメソッドのオブジェクト情報が取得できる。

適当な本処理のメソッドを実行した際の出力結果は以下の通り。

Method Start:String com.example.springmvc2.HomeController.home(Locale,Model)

本処理

Method End:String com.example.springmvc2.HomeController.home(Locale,Model)

 

AOPクラスに付与するアノテーション一覧

@Before:メソッドの実行前に処理を実行する。

@After:メソッドの実行後に処理を実行する。

@AfterReturning:メソッドの実行後に処理を実行する。(正常終了した場合のみ)

@AfterThrowing:例外がスローされた場合のみ処理を実行する。

@Around:メソッドの実行タイミングを自分で指定し、前後に処理を記述する。
 

executeの条件指定

execute内の記述でAOPの起動条件を指定できる。

@Before("execution(* com.example.springmvc2.*.*(..))")

左から順に、

戻り値の型、パッケージ、クラス名、メソッド名、メソッド引数

となる。

*はワイルドカード。

※executeの例をもう少し具体的に記載するべし。どなたかよろしくお願いします。

 

子ページ
子ページはありません
同階層のページ
  1. インストール(eclipseプラグイン)
  2. クイックスタート
  3. プロジェクトの作成
  4. Spring Bootプロジェクトの作成
  5. Spring Bootプロジェクトの実行
  6. Spring BootでHello World!
  7. アノテーション一覧
  8. DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
  9. DB接続設定や値の取得(JdbcTemplate編)
  10. ビューから値をモデルに格納しコントローラーで受け取る方法
  11. コントローラーにてモデルに値を格納してビューに渡す方法
  12. テンプレートエンジン
  13. ModelとModelAndViewの違い
  14. AOPの使用方法
  15. classpath: 内部ファイルの読み込み
  16. file: 外部ファイルの読み込み
  17. CSVファイルアップロード方法(Ajax)
  18. CSVファイルダウンロード方法(Ajax)
  19. Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
  20. Application.propertiesの環境依存設定の分割方法
  21. JPAにおけるEntityManagerの取得方法
  22. JPAにおけるjava.sql.Connectionの取得方法
  23. エラー一覧
  24. jarの引数を受け取る方法
  25. Spring BootでGmailからメール送信
  26. 複数のDBに接続する設定(Spring Boot & JPA編)
  27. ポート番号の変更
  28. Basic認証の実装と特定のURLに限定する方法
  29. Spring SecurityのBasic認証の無効化
  30. 独自のエラーページを定義する方法
  31. プロパティファイルの値やjar実行時の引数を取得する方法

最近の質問

コメント一覧

    No.549 | guest | 2023-01-28 08:48:10

    Dear itlibra.com owner, You always provide valuable information.

    No.548 | guest | 2023-01-20 14:06:37

    Hi itlibra.com Administrator, exact below: <a href="http://695example695.com" rel="nofollow">Link Text</a>

    No.547 | guest | 2022-12-30 16:13:03

    <a href="https://www.hydroxychloroquinex.com/">aralen pill</a>

    No.546 | guest | 2022-12-27 01:26:40

    500mg aralen <a href="http://hydroxychloroquinex.com/">http://hydroxychloroquinex.com/</a>

    No.545 | guest | 2022-12-25 11:29:50

    <a href="https://hydroxychloroquinex.com/">chloroquine phosphate tablets</a>

    No.544 | guest | 2022-12-17 07:21:46

    <a href="https://www.candipharm.com/# ">www.candipharm.com</a>

    No.543 | guest | 2022-12-13 05:46:50

    canadian diet pills http://candipharm.com/

    No.542 | guest | 2022-12-11 21:46:26

    <a href="http://www.candipharm.com/# ">http://www.candipharm.com/#</a>

    No.541 | guest | 2021-12-19 17:03:23

    Levaquin 500mg Without Dr Approval Over Night

    No.496 | guest | 2021-11-14 01:58:20

    Generic Isotretinoin Internet Website

    No.495 | guest | 2021-11-12 19:28:07

    online cialis prescription

    No.494 | guest | 2021-11-12 16:57:23

    Zithromax For Animals

    No.492 | guest | 2021-11-10 10:46:42

    Free Trial Viagra In Canada

    No.489 | guest | 2021-11-08 07:14:02

    Tiger King

    No.486 | guest | 2021-11-04 18:46:01

    cialis 30 mg

    No.484 | guest | 2021-11-03 18:55:05

    Free Levitra.Com

    No.483 | guest | 2021-11-03 07:42:27

    Cialis Eli Lilly

    No.472 | guest | 2021-10-10 04:58:44

    Levitra 10 Mg Vendita

    No.471 | guest | 2021-10-10 04:32:16

    New Healthy Man Viagra Review

    No.465 | guest | 2021-09-26 05:32:55

    Cialis Und Antibiotika

    No.463 | guest | 2021-09-24 23:52:15

    buy accutane in london

    No.462 | guest | 2021-09-24 07:28:09

    cialis en asturias

    No.459 | guest | 2021-09-20 04:43:01

    Cheap Price

    No.452 | guest | 2021-09-13 13:38:42

    Viagra Funciona Si

    No.449 | guest | 2021-09-10 03:40:23

    Confortid

    No.447 | guest | 2021-09-07 17:51:07

    gay dating younger older gay men social dating sites [url="gaydatinglosangeles.com?"]local gay dating hoboken , n.j.[/url]

    No.446 | guest | 2021-09-06 21:42:57

    Buy Propecia Finasteride Online

    No.444 | guest | 2021-09-05 22:37:12

    Prix De Vente Du Xenical