CS지식 쌓기

AOP 관점 지향 프로그래밍

류도토리 2024. 3. 6. 18:01

AOP (Aspect Oriented Programming)

어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미

 

'쉽게 말해 공통적으로 기능들에 로그를 남기거나 보안관련 검사를 하는 것들'을

한 곳에서 한 번에 관리할 수 있는 방법론이다.

 

이를 통해 코드의 중복을 줄이고 유지보수가 용이해진다.

 

예를 들어 내가 필요한 클래스의 메서드만 골라 동작하는 시간을 측정할 수 있다.

 

@Aspect // Aop로 쓸 때 쓰는 어노테이션
@Component // 써도 되지만 SpringConfig에 @Bean으로 등록해서 씀
public class TimeTraceAop {

    @Around("execution(* hello.hellospring..*(..))") // 어디다 적용할지 타겟팅
    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");
        }
    }
}

 

이렇게 작성하면 hello.hellospring 안의 메서드가 실행될 때마다 콘솔창에 START와 END로 그 메서드가 얼마나 걸렸는지 볼 수 있다.

'CS지식 쌓기' 카테고리의 다른 글

[CS 지식] 이해하기 쉬운 URL, URI  (0) 2024.02.14
파일 시스템  (1) 2024.01.04
파일과 디렉터리  (1) 2024.01.04
페이징의 이점과 계층적 페이징  (1) 2024.01.04
페이지 교체와 프레임 할당  (1) 2024.01.04