javaの - 春 - AOP

AOP:アスペクト指向プログラミング(アスペクト指向プログラミング)

あの白いあなたが望む位置に事業をパッケージ化するための一般的な方法です。これとOOP(オブジェクト指向)は、単にいくつかのビジネス・ロジックで完全なオブジェクト指向プログラミングに、競合していません。

例えば:

走行時間、印刷ログ。

Bが実行されている、印刷ログ。

伝統的な方法:

ログメソッドを記述するために実行終了位置。

ログメソッドを記述するためにBの実行終了位置。

このケースは大きなプロジェクトで、100個の方法は、ログを印刷する必要があります。場合には、再び(例えば、顧客の要件の変更印刷形式など)の変更、すべての変更作業がたくさんあります。

だから、AOPプログラミングのアイデアで、この問題を解決するためです。

 

この方法は、基本的な共通の印刷ログですので、あなたは、集中管理のための特別な方法を書くことができますので。そして、ここではすべてのターゲット統一メソッド呼び出しの実行の方法。所望の位置への割り当て方法。

SpringのAOPは、主にそれを行います。

 

ステップ:

クラス1. [追加]、必要なメソッドのセット

2.春を管理するように設定ノートの春を(私はここに@Componentがある)、追加

ノートの側面を追加3.、これはクラスAOPを表すために使用されます

4.春を伝えるために使用される対応するノートや表現を追加するもので、クラスと、これらのメソッドを使用することです

AOPモードを開いて、プロファイルを追加5.

 

Javaの:

パッケージcom.itheima.service。



輸入 org.aspectj.lang.annotation *。;
輸入org.springframework.stereotype.Component;
輸入com.itheima.domain.Account;

@成分
@アスペクト
パブリック クラスAopTest {


    // 任意の方法* * com.itheima.service.AccountService。*(..)は、任意の権限を返す戻り値の任意のタイプは、このクラスでは、パラメータは任意のものとすることができます。特定のニーズの変形例によれば

    // @Before( "実行(公共無効com.itheima.service.AccountService.aopTest())")    // AccountServiceのクラスaopTest実行する前に、プロセスを実行 
    @Before(「実行(パブリック*のcom.itheima.service .serviceImpl.AccountServiceImpl.findAll())「)// 実行AccountServiceImplクラスのfindAll実行する前に、
    公共 のボイドbeforeShowDataを(){
        System.out.println(「のfindAllターゲットメソッドを実行する準備ができて」);
    }

    @After( "実行(公共無効com.itheima.service.AccountService.aopTest())")    // 実行AccountServiceのクラスaopTestの実行後に、
    公共 のボイドafterShowDataを(){
        System.out.println(「ターゲット・メソッドを実行します」);
    }

    @AfterReturning( "実行(公共無効com.itheima.service.AccountService.aopTest())")    // AccountServiceのクラスaopTestが正常に終了した後、処理動作
    公共 のボイドafterReturnShowData(){
        System.out.println(「ターゲットメソッドが戻ります」)。
    }

    @AfterThrowing( "実行(公共無効com.itheima.service.AccountService.aopTest())")    // 実行スローaopTest AccountServiceのクラス、
    公共 のボイドafterThrowDataを(){
        System.out.println(「ターゲットメソッドは例外をスロー」)。
    }
}

 

設定ファイルを追加します。

< AOP:AspectJの-自動プロキシ> </ AOP:AspectJの-自動プロキシ>

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/clamp7724/p/11922469.html