📚
【初心者向け/ITスクール 79日】SpringBoot AOP
はじめに
今日は、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