AOPの適用
AOP欄
aopコンセプトの説明は多くのブログで詳しく紹介されています.
筆者は今日も中身を整理したいだけです
なぜAOPを使うのですか?
1.冗長コードの排除
2.核心的関心と横断的関心を分かち合うため
3.結合度を下げるため
これもaopを使う理由だと思います
もっとドラマチックな理由があるかもしれませんが、これが一番です・・・
1.重複コードの排除
aopを説明する際、典型的な例は、メソッドの実行時間をチェックすることである
すべてのメソッドにチェック時間のコードが組み込まれていると仮定します.
コピーは可能ですが、これが最悪のコードであることは誰もが知っています.
メソッドやクラスを作成する際には、自分の役割を明確にすることが重要です.
検査時間のコードをすべての方法に置くと,この趣旨に合わない.
2.核心的関心と横断的関心を分かち合うため
したがって、このメソッドのコアコンテンツを理解し、追加の機能を提供する必要があります.
(タイマー機能)別々に吸ったほうがいいです.
横断的な関心とは、このような多くの場所で共通に使用される付加機能を指す.
クラスまたはメソッドを使用してタイムチェック機能を作成することで、
後で実行すると、それぞれの役割に重点を置いたり区別したりしやすくなります
3.結合度を下げるため
すべてのメソッドにタイムチェックコードを入れると、
コードに変更点が表示された場合、すべてのメソッドを変更する必要があります.
これが一つや二つあれば大丈夫ですが、数千個だと思ってください・・・ほほほ?
aopを使用して依存性を低減し、時間チェック機能のみを使用するクラスまたはメソッド
修復すれば、使用時間チェックの他の方法で修正する操作はありません.
これらの理由でaopを使っているようですが、どのように自由に使うかは実感がありません...
実習
aopがどのように動作しているかを簡単にチェックしてみましょう
Controllerに登録されているすべてのメソッドを呼び出すたびに、筆者は次のようにプロンプトします.
[メソッド名]メソッドの開始
[メソッド名]メソッド終了
印刷
1. pox.xmlにaspectj設定を追加する
aopを使用するには、次のモジュールが必要です.
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.5</version>
</dependency>
2. dispatcher-servlet.xml3.メソッドの開始、終了出力のクラス
1行目@Componentは登録が空であることを示します
2行目@Asspect横断注目(共通の付加機能)
3行目@Aroundを使用して注目点を横断する方法.
execution은 methodLogger()을 사용할 메소드(핵심관심)들의 정보를 나타낸다
execution(* controller.*Controller.*(..))
(アクセスフラグはフォーマットパッケージを返します.クラス.メソッド(メソッドパラメータ)アクセス指定者は通常publicで省略できます
アクセス指定子を無視します.
*
(すべての戻りフォーマット)controller.
(controllerというパッケージにある)*Controller.
(~~コントローラのすべてのクラスにある)*
(すべての方法)(..)
(0の任意のタイプのパラメータ)これは、満たす方法に適用されることを意味します.
参照リンク:https://sjh836.tistory.com/157
4行目のProceedingJoinpointは、コアな関心メソッド情報を持つオブジェクトです.
5行目JoinPointgetSignature().getName()は、実行中のコア関心メソッド名を返します.
コントローラからselectメソッドを呼び出してみます
上の結果が出る
Reference
この問題について(AOPの適用), 我々は、より多くの情報をここで見つけました https://velog.io/@ajongs/AOP-적용하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol