スプリング-OP(概念、用語)


Scopeプロジェクトでは、チームメンバーがSpring AOPを使用してログをモジュール化します.
21-10-09の3行のspring AOP説明に追加!

AOPとは何ですか。


展望向けのプログラミングの略に訳すと、観点向けのプログラミングになります!
AOPは,OOP(オブジェクト向けプログラミング)概念と衝突する概念ではなく,OOPの概念を補完する.
OOPにおけるモジュール化単位はClassである.
AOPでは、モジュール化された単位はAspect!
概念的に解釈すれば
論理によって핵심기능-부가기능に分けられる.
このような観点に基づいて,付加機能をモジュール化する.
もちろん、必要に応じて分離されたモジュールを使用することができます!

例!



上の画像を例として理解しましょう.
Aクラス,Bクラス,Cクラスの付加機能をAOPベースにモジュール化する.
クラス内の主要機能以外の機能をクラスから分離する.
Aspect X Y Zで動作する
AOP를 이해할 때 Aspect를 번역해서 관점이 최소 단위라고 이해하면 나중에 어지러울 수 있다....(경험담)
문자 그대로 이해하는 것이 전체적인 개념 이해에 더 도움이 된다!
より具体的な例は、SCOPEプロジェクトでは、各コントローラのメソッドに出力ログのコード分離があります!


AOPで使用される用語と概念


Aspect


複数のクラスで使用される汎用機能をモジュール化
Springは、分離されたモジュール(クラス)に@Aspect操作を追加します.

Join Point


モジュール運転点
例外が発生した場合、メソッドを実行した場合、フィールド値をクエリーした場合など、さまざまな操作がjoin Pointとなります.

Advice


特定のjoin Point上でAsspectによって実行される操作
簡単な例を挙げて、AにB機能を実行させます!モジュールとして有名なら
BがAdviceになる!
評価の実施体としては、実行時点によって前後型に分けられる.
Spring AOPはAdviceをブロッキングにモデリングします!
(以下の詳細を参照してください!)

Pointcut


Join Pointの概要
Point==AdviceのJoin Pointを実行

Target object


1つ以上のビューでアタッチされたオブジェクト
Spring AOPはランタイムエージェントを用いて実装されるため,ターゲットオブジェクトは常にエージェントオブジェクトである.

AOP proxy


AOPフレームワークによって生成されたオブジェクトは、調査中のコンサルティングを実施するために使用されます.

コンサルティングタイプ


Before advice


Join Pointより前に実行
実行時に異常が発生しない限り、Join Pointのロジックは停止しません

After returning advice


Join Point正常完了後運転
例外を放出しない場合は、実行

After throwing advice


例外を放出し、メソッドが終了した後に実行

After (finally) advice


Join Point任意の方法で終了時に実行
例外なく実行

Around advice


メソッド呼び出しなどのJoin Point周辺
ユーザーは、呼び出しメソッドの前後で実行される論理を定義できます.
メソッドの戻り値の自己設定や例外を投げ出すことでメソッドの実行時間を短縮するなどを定義する必要があります.
Around advice는 가장 일반적인 종류의 Advice이다. 
위의 유형들의 기능 모두 동작할 수 있다.
** spring docs에서는 오류 가능성이 적은 프로그래밍을 위해서 
가장 구체적인 Advice 유형을 사용하기를 권장하고 있다.
[参考資料]docs.spring.ioのaop
Ver. 2.5.x
Ver. 4.3.12