Spring ‐ 스프링 AOP - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍) 개념
- 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나뉜다.
- AOP의 A(Aspect)는 부가 기능과 해당 부가 기능을 어디에 적용할지를 정의한 것이다.

AspectJ 프레임워크
📚 AOP 적용 방식

- 런타임 시점 : 실제 대상 코드는 그대로 유지된다. 대신에 프록시를 통해 부가 기능이 적용되며 스프링 컨테이너에 실제 클래스가 아닌 프록시가 빈으로 등록된다. 스프링 AOP는 이 방식을 사용한다.
- 프록시 방식을 사용할 경우 스프링 AOP는 메서드 실행 지점에만 적용할 수 있다.
📚 AOP 용어 정리

- 조인 포인트(Join Point)
- 어드바이스가 적용될 수 있는 위치, 메서드 실행, 필드 값 접근, 생성자 호출, static 메서드 접근과 같은 프로그램 실행 중 지점
- 조인 포인트는 AOP를 적용할 수 있는 모든 지점이다.
- 스프링 AOP는 프록시 방식을 사용하기 때문에 조인 포인트가 항상 메서드 실행 지점으로 제한된다.
- 포인트컷(Pointcut)
- 조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능
- 타겟
- 어드바이스
- Aspect
- 어드바이저
- AOP 프록시
- AOP 기능 구현을 위해 만든 프록시 객체, AOP 프록시는 JDK 동적 프록시 또는 CGLIB 프록시이다.