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 |