[イニシャル-SPring Boot]AOP


1. AOP


1-1. AOPとは?


AOPは予測に向けたプログラミングの弱者であり,観点に向けたプログラミングと呼ばれている.観点ガイドは簡単に言えば,ある論理を基準として,それを核心観点,付加観点に分け,その観点を基準としてそれぞれモジュール化する.
ここで、モジュール化とは、ある共通の論理または機能を1つの単位に組み合わせることを意味する.
例えば、コア観点は最終的に私たちが応用したいコアビジネスロジックになります.
さらに、コアロジックを実行するためのデータベース接続、ログ記録、ファイルI/Oも含まれます.
AOPでは,各観点を基準として論理をモジュール化しているが,これはコードを部分的にモジュール化することを意味する.
このとき,ソースコードには他の部分のコードが繰り返し書き込まれていることがわかり,分散の注目点(Crosscutting Concerns)と呼ぶ.

AOPが1~2個必要

  • のすべてのメソッドの呼び出し時間を測定したい場合は?
  • 共通注目点(横断注目点)とコア注目点(コア注目点)
  • 会員加入時間、会員閲覧時間を測定したい場合は?
  • 2.AOPの適用


    2-1. TimeTraceAOPの作成



    TimeTraceAop.java
    package com.rptp.rptpSpringBoot.aop;
    
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.Aspect;
    import org.springframework.stereotype.Component;
    
    @Aspect
    @Component
    public class TimeTraceAop {
    
    	 @Around("execution(* com.rptp.rptpSpringBoot..*(..))")
        public Object excute(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("Finish:" + timeMs);
                System.out.println("Finish:" + joinPoint.toString());
            }
        }
    }

    @Aspect


    AOPを適用するクラス

    @Component


    beanをスプリング容器に注入する

    @Around("execution( com.rptp.rptpSpringBoot..(..))")


    フォーカスレンズをAroundにセットしてから详しい内容を次回位置合わせします...



    リファレンス


    https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49600
    AOPとは?https://engkimbs.tistory.com/746