1️⃣ AOP (Aspect-Oriented Programming)
핵심 관심사와 횡단 관심사를 분리하여 모듈화하는 프로그래밍 패러다임
- 핵심 관심사: 애플리케이션의 비즈니스 로직 자체 (ex. 사용자 인증, 주문 처리, 결제 승인 등)
- 횡단 관심사: 여러 핵심 로직(클래스, 메서드 등)에 공통 적용되는 기능 (ex. 로깅, 보안, 트랜잭션, 성능 모니터링 등)
사용 이유
횡단 관심사 코드 중복 제거
- 로깅, 보안, 트랜잭션 등 공통 기능을 모듈화하여, 여러 클래스/메서드에 반복되던 코드를 제거
핵심 로직 코드 가독성 및 유지보수성 향상
- 횡단 관심사와 핵심 로직을 분리하여, 핵심 로직을 더 간결하게 유지
- 핵심 로직 변경 시 횡단 관심사 코드와 충돌 없이 수정 가능
모듈성・재사용성 증대
- 횡단 관심사를 Aspect라는 독립 모듈로 관리하므로, 다른 프로젝트나 모듈에 재사용 용이
- 한 번 정의한 Aspect를 여러 곳에서 활용 가능
비침투적(Non-Invasive) 적용
- 핵심 로직 코드를 직접 수정하지 않고도, Aspect를 프록시 방식으로 적용
- 기존 코드 변경 없이 횡단 관심사 추가/제거 가능
스프링 AOP 주요 구성
- Aspect
- 횡단 관심사 코드를 담는 클래스 단위
@Aspect