핵심 기능 (Core Concern)
부가 기능 (Cross-cutting Concern)
| 핵심 기능 | 부가 기능 |
|---|---|
| 상품등록, 상품목록, 상품구매 | 로깅, 트랜잭션, 자원해제 |
AOP (Aspect-Oriented Programming)
핵심 개념
| 개념 | 설명 |
|---|---|
| Aspect | 부가 기능을 모듈화한 단위 (Advice + Pointcut) |
| JoinPoint | Advice가 적용 가능한 모든 메서드 실행 지점 |
| Pointcut | Advice를 적용할 특정 JoinPoint |
| Advice | 부가 기능 자체 (before, after 등) |
| Weaving | Advice가 핵심 기능(JoinPoint)에 결합되는 과정 |
AOP 어노테이션을 통해 부가 기능을 특정 지점에서 실행
| 어노테이션 | 설명 |
|---|---|
@EnableAspectJAutoProxy |
Spring AOP를 활성화 (AspectJ 사용) |
@Aspect |
관심사(부가기능)를 정의하는 클래스 설정 |
@Pointcut |
Advice를 적용할 조인 포인트 지정 |
@Before |
메서드 실행 전에 Advice 실행 |
@After |
메서드 실행 후에 Advice 실행 |
@AfterReturning |
메서드가 성공적으로 종료된 후 Advice 실행 |
@AfterThrowing |
메서드 실행 중 예외 발생 시 Advice 실행 |
@Around |
메서드 실행 전·후 Advice 실행 (직접 제어) |