セクション要約セクションの異なる種類のさまざまな方法を使ってスプリングAOPと混合

概要
AOPの研究の私達の全体の範囲は、我々は、セクションの方法の4種類の定義と結論づけることができます。

道@AspectJのコメントに基づいて、

方法:<側面AOP>基づい

方法:<顧問AOP>基づい

ベースの顧問クラスの道

プロジェクトは上記JDK5.0とを使用している場合、@AspectJ優先して使用することができます。

プロジェクトが唯一のJDKの低いバージョンを使用できる場合は、使用することを検討することができます。<AOP:側面を>。

プロジェクトの低開発に基づく春AOPのバージョンをアップグレードする場合は、<AOP:顧問>を使用して検討することができますアドバイスの再利用既存のクラスを。

プロジェクトが唯一の春の低いバージョンを使用することができるなら、あなただけAdvisorを使用することができます

また、セクションベースの顧問の一部のみが、このようなプロセスベースのControlFlowPointcutファセットとして、APIの構文を使用することができることは注目に値します。

カットの様々なタイプの混在利用
春定義部は、4つの方法を提供していますが、基礎となる実装技術は同じであり、同じプロジェクトで春春のオファーを混合することができるので、それは、CGLIBおよびJDKの動的プロキシに基づいていますが、さまざまな方法の定義をカット。

<?xml version = "1.0"エンコード= "UTF-8"?>
<豆のxmlns = "http://www.springframework.org/schema/beans"
のxmlns:P = "http://www.springframework.org /スキーマ/ P "のxmlns:AOP = "http://www.springframework.org/schema/aop"
のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance"のxmlns:コンテキスト=" http://www.springframework.org/schema/context "
XSI:のschemaLocation =" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans。 XSD
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
ます。http:// www.springframework.org/schema/context/spring-context.xsd ">

<! - モード:プロセス制御部を達成するために使用顧問API道 - >

< -方法アドバイザAPIフロープロセス指定接点と接する点ベースのプロセスの接点! - >
<ビーンID =「ControlFlowPointcut」クラス=「org.springframework.aop.support.ControlFlowPointcut」>
<コンストラクタ型のArg = "のjava.lang.Class"
値= "com.xgj.aop.spring.advisor.ControlFlowAdvisor.WaiterDelegate" />
<コンストラクタのArg-TYPE = "java.lang.Stringで"値= " -サービス" />
</ビーン>

<! -アドバイザAPI切面- >
<豆ID = "controlFlowAdvisor"クラス= "org.springframework.aop.support.DefaultPointcutAdvisor"
P:ポイントカット-REF = "controlFlowPointcut" P:アドバイス-REF = "greetingBeforeAdvice" />


<! - |||||||||||||||||| ||||||||||||||||||行を分割します - >

<! -第二の方法:@AspectJ注釈走査部を定義する- >
<AOP:AspectJの自動プロキシプロキシ・ターゲット・クラス=「trueに」/>


<! - |||||||||||||||||| ||||||||||||||||||行を分割します - >


<AOP:コンフィグプロキシ・ターゲット・クラス= "真">
< - -命名切点!>
<AOP:ポイントカット表現= "実行(。* COM .. * Waiter.greetTo(..))"
ID = "beforeAdvice" />
< -方式三:!基于<AOP:顧問>的方式- >
<AOP:顧問のアドバイス-REF = "greetingBeforeAdvice"
ポイントカット-REF = "beforeAdvice" />
</ AOP:config>の
<豆ID = "greetingBeforeAdvice"
クラス= "com.xgj.aop.spring.advisor.schema.advisor.GreetingBeforeAdvice" />


<AOP:設定プロキシターゲットクラス= "真">
<AOP:ポイントカットID = "bussinessBindParamProgram"
表現= "ターゲット(com.xgj.aop.spring.advisor.schema.bindParameter.BussinessBindParam)と引数(名前、NUM ..) "/>
< -方式四:!基于<AOP:側面>的方式- >
<AOP:アスペクトREF = "adviceMethodsBindParam">
<AOP:ポイントカット-REF =の前に"bussinessBindParamProgram"
方法="横断的"/>
</ AOP:側面>
</ AOP:設定>

</豆>

スプリングであるが、単一の技術を確保するため、可能な限り、プロジェクトの実際のニーズ単一形態と同じ効果に切断し、様々なタイプの混合物であることが、一般的にプロジェクトで同時に使用されないかもしれませんセックス。

さまざまな側面の概要

方法のセクション4種類、本質的に同じ、定義されており、強化されたカットオフポイント、ちょうど別の症状の下で定義を比較してみましょう

 

 https://img-blog.csdn.net/20170921114019036?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3NoYW5nd2Vp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

 実際<AOP:態様>ハイブリッド及び顧問、そのカットポイント表現と<AOP:態様>同じ、およびエンハンスメント定義アドバイザ同様:表から、我々は<アドバイザAOP>を見ることができます。

 

参照メソッドにインターフェース呼び出しを増強することにより、基準と顧問として接続点を結合させる方法、<AOP:アドバイザ>接点での発現は、結合点は、この方法は、切断機能を使用して、基準点に結合することができないことに留意すべきですそれ以外の場合は、エラーが発生します。

 

おすすめ

転載: www.cnblogs.com/yazhong-java/p/11726352.html