Spring 이 제공하는 중요한 기능 중 하나인 AOP(Aspect-Oriented Programming) 에 대해 정리하고자 한다.
AOP 는 애플리케이션의 핵심 비즈니스 로직과 이를 둘러싼 공통 기능(로깅, 보안, 트랜잭션 관리 등)을 분리하여 모듈화하는데 집중한다.
AOP 관련 핵심 개념에는 다음과 같은 항목들이 있다.
1. Aspect (관점)
- 공통 기능(횡단 관심사)을 모듈화한 것
2. Join Point (결합 지점)
- Aspect 를 적용할 수 있는 지점
> Spring AOP 에서는 메서드 실행 지점만 Join Point 로 지원
3. Advice (조언)
- Join Point 에서 수행할 구체적인 작업 정의
4. Pointcut (포인트컷)
- Advice 가 적용될 Join Point 를 필터링하는 표현식
> 메서드 이름 패턴이나 어노테이션 기준으로 정의
5. Weaving (위빙)
- Aspect 와 Target Object 를 결합하여 Proxy 객체 생성
> Spring AOP 는 런타임 위빙 지원
6. Target Object
- Advice 가 적용될 실제 객체
AOP 를 사용시 공통 로직의 재사용성이 증가한다는 장점을 가지지만, Proxy 기반의 동작으로 약간의 성능이 저하되며 코드 흐름이 복잡해진다는 단점을 가진다.
'IT > Spring' 카테고리의 다른 글
[Spring] JDK Proxy vs. CGLIB (0) | 2025.01.05 |
---|---|
[Spring] Reflection (1) | 2025.01.03 |
[Spring] Spring Batch 도입기 (1) | 2025.01.02 |
[Spring] WebFlux 테스트 코드 작성 (0) | 2024.11.27 |
[Spring] Spring Framework vs. Spring Boot (2) | 2024.11.14 |