Day03:AOP
2293 ワード
1、横断接続点:通知を適用するすべての点 通知:うどんが何であるか、いつ を使用するか接点:アプリケーションの特定の位置(どの接続点)を通知する 切面:通知と切点の結合 2、SpringのAOP
2.1 AOPサポートタイプエージェントベースのクラシックSpring AOP 純POJO切面 @AspectJ注記駆動の切面 注入式AspectJ切面 最初の3つは,動的エージェントに基づいて構築され,メソッドブロックのみをサポートする.
2.1.1クラシックSpring AOP
不器用な繰り返し、ProxyFactoryBeanを直接使用
2.1.2 POJO切麺@Aspect注記クラスを使用してメソッドに注記するとともに、このクラスも通常のクラス も含む.は、 を呼び出す.
2.2クラスレベルの自動エージェントの構成
2.2.1 JavaConfigで、注記
2.2.2 xmlでの構成 aopネーミングスペース を導入
2.3周回通知例では、
jp.proceed();//呼び出さないと通知メソッドの呼び出しがブロックされます
}`
2.4パラメータ付き通知
`@Poingcut("execution(** soundsystem.CompactDisc.playTrack(int)) && args(trackNumber) ") public void trackPlayed(int trackNumber){}
@Before("trackPlayed(trackNumber)")public void countTrack(int trackNumber){//trackNumberの値を変更}`//式分解:*:任意のタイプsoundsystem.CompactDiseを返す:メソッドが属するタイプplayTrack(int):メソッドおよび受け入れられるパラメータタイプargs(trackNumber):指定パラメータ
3、注釈と新機能
3.1新しいメソッド(インタフェース)の追加
既存のbeanにインタフェースを追加し、エージェントを介して新しいインタフェースを暴露する.このメソッドが呼び出されると、エージェントはこの呼び出しを新しいインタフェースを実現した他のオブジェクト
2.1 AOPサポートタイプ
2.1.1クラシックSpring AOP
不器用な繰り返し、ProxyFactoryBeanを直接使用
2.1.2 POJO切麺
@Before("execution(* concert.Performance.perform(..))")
メソッドであり、各メソッドには接点式が必要であり、@After、 @AfterReturning、 @AfterThrowing、 @Around[ ]、 @Before
@ Poingcut
注釈によって命名された接点を定義し、@Poingcut("execution(** concert.Performance.perform(..))") public void performace(){} @Before("performance()")
2.2クラスレベルの自動エージェントの構成
2.2.1 JavaConfigで、注記
@Configuration @EnableAspectJAutoProxy @ComponentScan
2.2.2 xmlでの構成
xmlns:aop="http://www.springframework.org/schema/aop" xml:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aopsoring-aop.xsd
2.3周回通知
@Around
注記`@Around(「performance()」)public void wtachPerformance(ProceddingJoinPoint jp){jp.proceed();//呼び出さないと通知メソッドの呼び出しがブロックされます
}`
2.4パラメータ付き通知
`@Poingcut("execution(** soundsystem.CompactDisc.playTrack(int)) && args(trackNumber) ") public void trackPlayed(int trackNumber){}
@Before("trackPlayed(trackNumber)")public void countTrack(int trackNumber){//trackNumberの値を変更}`//式分解:*:任意のタイプsoundsystem.CompactDiseを返す:メソッドが属するタイプplayTrack(int):メソッドおよび受け入れられるパラメータタイプargs(trackNumber):指定パラメータ
3、注釈と新機能
3.1新しいメソッド(インタフェース)の追加
既存のbeanにインタフェースを追加し、エージェントを介して新しいインタフェースを暴露する.このメソッドが呼び出されると、エージェントはこの呼び出しを新しいインタフェースを実現した他のオブジェクト
@Aspect public class EncoreableIntroducer { @DeclareParents(value="concert.Performance+", defaultImpl=DefaultEncorealbe.class) public static Encoreable encoreable; }
//解釈説明value:インタフェースを導入するbeanを指定し、+そのすべてのサブタイプを表し、そのボディdefaultImplではありません:機能を導入する実装クラス@DeclareParents注記:導入するインタフェース