AOP


基礎課程の金ヨンハンのスプリング講座を聞いて整理した内容ソース

AOPが必要


コアビジネスロジックではなく、すべてのメソッドのコール時間測定など、共通の関心のある問題を追加する必要があります.
すべての方法の開始と終了に時間測定コードを追加する必要があります.これは時間がかかりすぎます.この場合、AOPが必要です.

AOPの適用


AOPは,コア関心事項と共通管理事項を分けて開発した技術である.


上記の図に示すように、時間計測など共通の関心事については、AOPを使用して時間計測コードを分離して開発することができ、各方法の開始および終了に時間計測コードを追加するのではなく、AOPを使用して開発することができる.예제
@Component
@Aspect
public class TimeTraceAop {

    @Around("execution(* hello.hellospring..*(..))")
    public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
    
        long start = System.currentTimeMillis();
        
        System.out.println("START: " + joinPoint.toString());
        
        try {
            return joinPoint.proceed();
        } finally {
            long finish = System.currentTimeMillis();
            long timeMs = finish - start;
            
            System.out.println("END: " + joinPoint.toString()+ " " + timeMs +
                    "ms");
        }
    }
}
@Aspect AOP機能が必要@Componentスプリング空席登録(通常は実際の動作ではConfigで登録されている)
アプリケーション@Aroundの共通の注目点の位置を指定

AOP挙動

AOP 적용 전 의존관계 AOP 적용 후 의존관계
AOPが適用されると、メンバーコントローラからメンバーサービスが呼び出されると、プロキシメンバーサービスが呼び出され、ポイントが接続されます.プロセス()を呼び出すと、実際のmemberServiceが呼び出されます.AOP 적용 전 전체 그림 AOP 적용 후 전체 그림