AOP 관련 용어

참고
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/learn/lecture

컴파일 타임 관련 용어

Advice는 실행하려는 코드를 의미한다. 로그(log) 출력하기나 인증하기(Authentication) 같은 것이 해당한다.

Pointcut은 인터셉트하려는 메소드 call을 의미한다. 어떤 메소드를 인터셉트할 것인가 비즈니스 패키지나 데이터 패키지의 원하는 메소드를 인터셉트하고 싶을 때 Pointcut 표현식으로 인터셉트할 대상이 되는 메소드를 명시한다. 표현식에 명시한 패키지의 모든 클래스의 모든 메소드는 다 인터셉트된다.
표현식: “execution(* ‘pakageName..’..(..))”

Aspect는 Advice와 Pointcut의 조합이다. Advice의 What, Pointcut의 When이 합쳐지면 Aspect가 된다.

Weaver는 AOP를 구현한 프레임워크를 의미한다. Advice와 Pointcut을 정의하고 난 다음 Advice가 적시에 구현되는지 AOP 프레임워크, 즉 Weaver가 확인한다. AspectJ나 Spring AOP도 Weaver이다. 또한 AOP를 실행하는 과정을 통틀어 Weaving이라고도 한다.

런타임 관련 용어

런타임에는 조인포인트가 있다. Pointcut 조건이 참이면 Pointcut에 정의된 조건이 참이면 어드바이스가 실행된다. 예를 들어 Pointcut 조건이 참이 되는 메소드 호출이 1,000건 있다고 한다면 Advice도 1,000번 호출된다, Advice 실행 인스턴스를 가리켜 조인포인트라고도 한다. 조인포인트는 메소드 호출과 관련된 정보를 더 제공하는데, 특정 실행 관련 정보 또는 메소드 매개변수를 가져오거나 클래스, 메소드 시그니처를 확인할 수 있고 소스 위치 등 여러 정보를 얻을 수 있다.