본문 바로가기
Spring

스프링 가볍게 느껴보자 (3)

by Coarti 2024. 1. 11.

마지막으로 AOP에 대해서 가볍게 알아보자

해당 사진은 서비스 기능 중 join() 함수를 실행 한 결과다 

두번째 파트에서 DB기술을 변경하면서 마지막에 사용했던 JPA를 사용했을 때의 모습이다.

 

당연하게도 필수적인 핵심 기능이기에 어떻게 동작하고 원하는 결과가 나오는지 검증해야한다.

이때 해당 메소드가 동작하는데 시간이 얼마나 걸리는지 동시에 확인하려면 부가적인 코드를 입력해야 할것이다

또 다른 모든 메소드에 대해서도 공통으로 동작시간을 확인하고 싶다면 모든 메소드에 추가적인 코드를 작성해야한다.

 

핵심 관심 사항 외에 공통 관심 사항을 확인하기 위해 탄생한 개념이 AOP다

이 두개의 관심 사항을 따로 분리하여 관리하지만 동시에 확인할 수 있도록 만들어 보자

@Aspect
@Component
public class TimeTraceAop {

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

다시 테스트코드를 확인해보자

이렇게 테스트 대상에 되는 메소드 마다 또 그 안에 사용된 메소드마다 실행 시간을 파악할수 있도록 만들었다.

 

AOP는 디자인 패턴 중 Proxy 패턴을 기반으로 하고 있다.


스프링 가볍게 느껴보자 (4)

 

스프링 가볍게 느껴보자 (4)

이번 내용을 정리하면서 구체적으로 DB접근 기술에 대해 구분지어 보며 직접 코드로 차이점을 느껴 볼 수 있었다. 가장 인상 깊었던 것은 테스트코드를 간단하게라도 사용해 볼 수 있어 프로젝

cloakinghost.tistory.com

 

728x90

'Spring' 카테고리의 다른 글

스프링의 핵심  (0) 2024.01.13
스프링 가볍게 느껴보자 (4)  (0) 2024.01.13
스프링 가볍게 느껴보자 (2)  (0) 2024.01.10
스프링 가볍게 느껴보자 (1)  (0) 2024.01.09
API  (1) 2024.01.07