AOP
観点に向けたプログラミング(AOP)
📌 AOPとは?
問題の観点に基づいてプログラミングする方法
AOPを実現する方法には多くの種類があり,通常,共通の注目点を実現するコードをコアロジックを実現するコードに挿入する.
Web上で使用されるインタフェースやフィルタがあります.
AOPはプログラミング方法です.
適用範囲は、汎用機能として、特定のパケットの特定のクラス全体、特定のクラスの特定のメソッド全体などに設定できます.
共通の機能=共通の興味
コアロジック=キーポイント
コアビジネス機能を区別するために、共通機能を共通注目点(横断注目点)と呼び、コアロジックをコア注目点(コア注目点)と呼ぶ.
📌 2.AOP主な用語
📌 3.エージェントベースのAOPアプリケーションプロセス
汎用機能の呼び出し=callModule()
コア機能の呼び出し=ビジネス()
📌 4.スプリング上のAOP
スプリング自体はエージェントベースのAOPをサポートする.
Spring AOPはメソッド呼び出しJoinPointのみをサポートします.
スプリングは完全なAOP機能を提供しない.
エンタープライズアプリケーションの実装に必要な機能のみをサポートします.
スプリングは、3つの方法でAOPを実現することを可能にする.
AspectJを使用するにはpomを使用してください.xmlは依存項目を設定する必要があります.
📌 5.実装可能な添付ファイルの種類
コアロジックの「いつ」に汎用機能を適用するか(実行前/後、異常発生前/後)を定義します.
したがって、最初のパラメータを使用してProcedinJoinPointタイプを指定する必要があります.
Around Advisor以外のAdvisorは、より詳細に機能を実装するために使用され、それらの実装方法はわずかに異なる.
BeforeAdviceを実装するクラスの戻りタイプは、通常「void」です.
戻り値があっても、実際のアプリケーションでは使用されないためです.
After Adviceを実装する方法で、ターゲットオブジェクトが戻り値を使用する場合は、戻り値を渡すパラメータの名前を戻り属性で指定します.
After Throwing Advice例外オブジェクトを使用する場合は、次の操作を行います.
duppingプロパティを使用して、例外オブジェクトを受信するパラメータ名を指定します.
📌 6.XMLベースのPOJOクラスを用いてAOPを実現
aopネーミングスペースのXMLアーキテクチャが指定されている場合は、以下に示すように
<bean id="profiler" class="com.spring.exercise.aop.Profiler"/>
<aop:config>
<aop:aspect id="traceAspect" ref="profiler">
<aop:pointcut id="publicMethod"
expression="execution(public * com.spring.exercise..*(..))"/>
<aop:around pointcut-ref="publicMethod" method="trace"/>
</aop:aspect>
</aop:config>
<bean id="memberService"
class="com.spring.exercise.member.MemberServiceImpl" />
📌 7.@Asspecter宣言に基づくAOP
7.1 @Pointcut
@Pointcutをメソッドに適用したり、@Aroundプロパティからこのメソッドを呼び出すことで設定を簡略化したり、複数のAdviceで使用したりすることもできます.
@Pointcut言語で位置決めする方法を参照するには、次のように入力します.
@Pointcutメソッドは同じクラス
@Pointcutメソッドは
7.2 @Joinpoint
JoinpointはPointを含む
したがって、Pointcutは詳細な指定に使用されます.
Around Advisorはキー機能の前後を指定していないため、JoinPointを基準に前後を区別するため、JoinPointタイプは最初のパラメータとして使用する必要があります.
Around Advisorに加えて、他のAdvisorタイプを実装する方法は、JoinPointオブジェクトを選択的に使用することができる.
ProceedingJoinPointのプロセス()メソッドを呼び出すと、プロキシターゲットオブジェクトの実際のメソッドが呼び出されます.実際のメソッドが呼び出されるので,実際のメソッドの前後を区別することができる.
99 spring AOPはインタフェースを使用してプロキシオブジェクトを作成し、instanceof演算子でインタフェース実装クラスをチェックするとfalseを返します.インタフェース条件ではなくクラスに基づいてプロキシを作成するには:
📌 8.実行指示者
execution(修飾子?戻りタイプクラス名?メソッド名(パラメータ)
Spring AOPはパブリックメソッドのみに適用されるため、「修飾語」の部分は省略できます.
各アレイでは、すべての値を「*」で表すことができます.「...」0個以上の意味で使うことができます.
📌 9.デバイス適用順序
デバイスの適用順序を明示的に指定するには、@Order宣言を適用するか、Orderedインタフェースを実装します.
@Aspect
public class Exercise implements Ordered {
@Override
public int getOrder() {
return 2;
}
@Order宣言を使用する場合は、値を使用して適用順序を指定します.@Order(3)
実行前は順番に適用し、実行後は逆順に適用します.(出典:Spring 4.0プログラミングWeb開発者用、著者:崔凡均)
Reference
この問題について(AOP), 我々は、より多くの情報をここで見つけました https://velog.io/@dongeranguk/AOPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol