Javaにおけるaopに関する概念の紹介

2435 ワード

目次
どうしてaopを使うの?
aop用語紹介
具体的な実践.
 
どうしてaopを使うの?
1)便利のために、ある海外の有名なマスターを見て、プログラミングの人はすべて“怠け者”で、彼が自分のしたことをすべてプログラムにやらせたためです.AOPを使って多くのコードを書かないようにするのは十分でしょう.2)より明確な論理のために、他のことを考えずに自分のビジネスに関心を持つことができます.これらの他のことには、セキュリティ、物事、ログなどが含まれています. 
aop用語紹介
  • 通知・拡張処理(Advice)
  • あなたが望む機能、つまり安全、物事、ログなどです.まず定義してから使いたいところを使ってください.Aspectを含む処理コード
  • 接続点(JoinPoint)
  • これはもっと説明しやすいですが、スプリングが通知(Advice)を許可する場所です.それは本当に多いです.基本的な方法の前後です.(両方あってもいいです)、または例外を投げ出した場合は接続点でもいいし、springはメソッド接続点のみをサポートします.他にAspectJのようにコンストラクタやプロパティ注入時でもいいですが、それは私たちが注目しているものではありません.覚えておいてください.メソッドに関連する前後は接続点です.
  • 接点
  • 上で述べた接続点に基づいて、切り込み点を定義します.あなたのクラスには、15の方法があります.それでは、十数の接続点がありますよね.しかし、すべてのメソッドの添付ファイルで通知を使用するつもりはありません(織り込みという方法を使用して、後で話します).いくつかのメソッドを呼び出す前に、後に、または異常を投げ出すときに何をしたいのか、切り込みポイントでこれらのメソッドを定義し、切り込みポイントで接続ポイントをフィルタし、目的のメソッドをいくつか選択します.
  • 切面(Aspect)
  • 切面は通知と切り込み点の結合です.今気づいたでしょう.接続点は何もありません.接続点はあなたに切断点をよく理解させるために作られたものです.この概念を理解すればいいです.通知は、何をするか、いつやるか(メソッド名のbefore、after、aroundなどでいつやるか)を説明し、2つの切り込み点は、どこでやるか(どの方法を指定するか)を説明し、これが完全な切面定義です.
  • 導入(introduction)
  • 既存のクラスに新しいメソッド属性を追加できます.これは、ターゲットクラスにフェース(すなわち、新しいメソッドプロパティ:通知定義)を使用することではないでしょうか.
  • ターゲット
  • 導入で言及されたターゲットクラス、すなわち通知される対象、すなわち本当のビジネスロジックは、彼が知らないうちに、どのようにうどんに織り込まれるかを知ることができる.二自分で業務そのものの論理に専念する.
  • エージェント(proxy)
  • どのようにAOPメカニズム全体を実現するかは、エージェントを通じて行われています.これは後で詳しく説明します.
  • 織り込み(weaving)
  • ターゲットオブジェクトにフェースを適用して新しいエージェントオブジェクトを作成するプロセス.3つの方法があり、springは実行時を採用しているが、なぜ実行時なのか、前文「Spring AOP開発漫談の初探AOPおよびAspectJの使い方」で2番目に言及した.
  • ターゲットオブジェクト
  • プロジェクト元のJavaコンポーネント
  • AOPエージェント–
  • AOPフレームワークによるjavaオブジェクトの生成
  • AOPプロキシメソッド
  • advice+ターゲットオブジェクトのメソッド
     
    具体的な実践.
     
    @Aspect //    ,   
    public class Audience {
     
    @Pointcut("execution(* *.perform(..))") //    ,    
    public void performance() {}
     
    @Before("performance()")  //      
    public ....      
     
    @AfterReturning("performance()")  //      
    public ...
     
    @AfterThrowing("performance()")  //         
    public ...
    }
    
      //    Bean,   
       //    ,    
     
      //    babalalal
    
    
     
    
    

    備考:原文アドレス