
서비스에 필요한 기능: 비즈니스 로직
시간을 재거나, 권한을 체크하거나, transaction을 거는 기능(=부가기능): 인프라 로직
인프라 로직
- 애플리케이션 전 영역에서 나타남
- 중복코드 -> 유지보수 힘듬
- 비즈니스 로직과 섞여 있어 비즈니스 로직을 이해하기 힘들게 만듬
- 로깅, 트랜잭션, 성능 측정 등의 부가기능
- Cross-cutting concern
Aspect-Oriented Programming
- OOP와 같은 하나의 패러다임으로, 각 언어마다 AOP 구현체를 필요로 함
- Java: AspectJ
Target
Advice
Join point
- 어디에 적용할 것인가: 메서드가 호출, 실행, 필드에 접근할 때, 필드에 접근할 때 등에 적용 / But Spring에서는 메서드가 실행될 때 만으로 한정
Point cut
- 포인트컷(Pointcut)은 관심 조인 포인트를 결정하므로 어드바이스가 실행되는 시기를 제어할 수 있음