최범균님의 스프링 프로그래밍 입문 이라는 책을 통해 공부한 부분을 블로그에 정리하고자 합니다. 잘못되거나 부족한 부분이 있으면 언제든 댓글로 가르침 부탁드립니다.
** AOP를 깊게 이해하기 위해서는 프록시 개념에 대해 잘 알아야 하지만, 아직 완벽히 이해하지 못해 이번 포스팅에선 제외하고 다음에 제대로 공부한 후 추가 포스팅하도록 하겠다.
AOP는 Aspect Oriented Programming의 약자로 관점지향 프로그래밍이란 뜻이다.
쉽게 설명하면,
핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것
핵심 기능에 공통 기능을 삽입하는 시점은 3가지이다.
이중 스프링이 제공하는 것은 3번 런타임 시점 이고 나머지는 AspectJ같은 도구를 이용해야 한다.
어떻게 사용되는지 개념을 잡기위해 아주 간단하게 예시를 들어보겠다.
@Aspect
public class ExeAspect{
@Pointcut("execution(public * common..*(..))")
private void publicTarget(){
}
@Around("publicTarget()")
public Object measure(ProceedingJoinPoint joinPoint) {
...
}
}
위 코드의 의미는
ExeAspect
클래스는 공통기능을 설정하기 위한 클래스이고, Pointcut
으로 하며 이 포인트컷의 이름을 publicTarget
이라고 하고, measure
라고 하며 Around
Advice를 적용하겠다.