본문 바로가기

aop

AOP란 무엇인가

728x90

AOP는 


공통관심사항과 핵심관심사항을 분리시켜논다.

모든회원의 로그인하는 시간 또는 내가 실행하는 모든 패키지에 대해 시간을 측정해줄수있다.

 

다음소스는 Mapper,Service,Controller에서 실행되는 메서드들의 실행시간을 측정하는 소스이다.

 

 

 

package com.example._0816test2.AOP;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class TimeTraceAop {

    @Around("execution(* com.example._0816test2..*(..))")
    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");

        }
    }
}

 

 

 

결과값:   

 

 

 

 

728x90