AOP
アスペクトOritentedプログラミングの略、指向プログラミング。
スルーモード、プリコンパイルおよび実行時の動的なエージェントをプログラムを達成するための統一技術的なメンテナンスを提供しています。
AOPはある概念ではなく、セットの特定の言語。それは克服したもののみ、単一継承特性言語の欠点を。
技術のspring2.0 AspectJの統合後
AspectJの
フレームの対向部。これは、AspectJのは、AOPの構文を定義し、Java言語を拡張し、
だから、持っている特別なコンパイラ準拠仕様Javaバイトコードのクラスファイルを生成するために使用します。
AOP:主な機能:ロギング、パフォーマンス統計、セキュリティ管理、トランザクション処理、例外処理。
(サービス層を呼び出す場合、クロス、プロキシ。そしてトリガサービスレイヤを運びました。)
AOPとOOPの違い
。1、OOP :( オブジェクト指向プログラミング)エンティティ、属性、およびビジネスプロセスの挙動はです抽象の包装、
明確に効率的なロジック・ユニット部門を取得します。
2、AOP :( 指向プログラミング)処理業務であるセクションを抽出します。のプロセスに直面して
各ステップと舞台。ロジックプロセスの各部分間の低アイソレーションを結合します、
AOP関連の用語
1、ターゲット(観客が):を参照するオブジェクトを強化する必要があります。実装のプロキシモードを介してスプリングAOPからです。
このオブジェクトは、常に、プロキシオブジェクトになります。
図2に示すように、点(接続点)に参加:指す点(メソッド)が遮断され、スプリング型接続点が支援方法。
3、ポイントカット(エントリポイント)を意味するポイントの組参加、一緒になど、正規表現、論理的関係によって、またはワイルドカードによって組み合わさ。
それは、対応するアドバイスが起こる場所を定義します。
4、アドバイス(通知):ある接続点に傍受が行われる必要が後。通知は、事前通知に分けリア、アドバイスをスローされ、
最終的な通知は、アドバイスの周りに、特定の動作を規定ポイントカット定義プログラムポイントが行われます。
5、導入が(紹介):特別な通知です。クラスコード前提を変更せずに。この方法は、動的に追加したり、操作時にクラスの属性をすることができます。
図6は、態様(セクション)は:であり、出発点と通知が結合します。
図7は、製織(製織):これは、あるプロセスである対象物に印加されるカットがプロキシオブジェクトAOPプロセスを作成することです。
ウィービングは、クラスローダ、コンパイル時に運転期間のであってもよいです。 織りスプリングを使用しました。AspectJのは、静的な織りを使用します。
図8は、プロキシ(プロキシ)は:拡張クラスAOPに織り込まれた後、プロキシクラスの結果を生成します。
AOPの発展の基礎となります
AOPは、静的および動的AOPのAOPに分けます。
静的AOP:参照AspectJの実装はAOP、直接クラスファイルにコンパイルされたJavaコードをカットします。
動的AOP:実施スプリングAOPは、動的カットAOP達成織り込ま。
技術的な実現:JDKのダイナミックプロキシ、CGLIBのダイナミックプロキシ。
JDK動的プロキシ:の動作中のJVMバイト・コード・クラス動的に生成された(唯一のためのオブジェクト(オブジェクトクラス)インターフェース操作)
CGLIBのダイナミックプロキシ(コード生成ライブラリ):オープンソースプロジェクトです。動作中のJava Javaクラス・インターフェースの拡張と実装。
CGLIB下地層は、バイトコードを変換して、新しいクラスを生成するために、高速で小さなフレームのバイトコードASMを使用することです。
それが単独で使用されている場合。インポートする側の必要性:CGLIB、ASMジャーパッケージが、春の使用を開発するために、春・コア側はjarファイルをインポートする必要があります。
AOP伝統的な開発
インポートする必要があるコアのjarパッケージのjarパッケージとの依存関係を
org.springframework.aopパッケージの下:従来の開発開発の5種類があります。
MethodBeforeAdvice:事前の通知; AfterReturningAdivce:リア通知。
MethodInterceptorの:リング振れ通知; ThrowsAdivce:異常通知。
IntroductionInterceptor:通知を導入
传统的aop开发,需要每一步都手动创建,并实现。
在上传的文件中有源码。
基于aspectJ的开发
基于aspectJ开发,和传统的相比就是配置的时候,基于aspectJ。这样开发起来比较简单。
还需要导入aspectj的包。aspectJ.weaver的jar包
在上传的文件中有源码。
配置的正则表达式还有
AspectJ基于xml开发aop
spring框架在默认的情况下,是对有接口的类使用proxy代理的。
<aop:config proxy-target-class="false">
false: 代表有接口使用proxy代理;
true : 使用cglib代理,不考虑是否有接口。
在上传的文件中有源码。
AspectJ注解开发
直接是在类里面使用注解。然后在配置文件中进行一个代理。
在上传的文件中有源码。