📚

【初心者向け/ITスクール 79日】SpringBoot AOP

2023/11/10に公開

はじめに

今日は、ITスクールに通った79日目の日です。
SpringBoot基礎講座をまた、繰り返えしながら理解できなかったところをもう一度コーディングしたり、JavaScriptのPromise、Asynkが難しかったのでもう一度勉強してみる時間を持ちました。

AOP

核心ビジネスロジック(会員登録)と関係はないが、共通している機能。
毎度コードをクラスに入れるのではなく、@Aspectを付け、分離することができます。

以前、SpringBootのインターセプターを使ったことがあるため、今回はAOPをより理解でき、
簡単なプロジェクトに適用してみたいと思いました。
例えば、機能別に時間を測定するAOPを適用し、ボトルネック現象を把握することができるので、適用してみたいと思います。

package hello.hellospring.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class TimeTraceAop {

    @Around("execution(* hello.hellospring.service..*(..))")
    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");
        }
    }

}

Discussion