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の-自動プロキシ>