- 부가기능 모듈화의 필요성
- '핵심기능': 각 API 별 수행해야 할 비즈니스 로직
- '부가기능': 핵심기능을 보조하는 기능

- 문제점
- 모든 '핵심기능'의 Controller 에 '부가기능' 코드를 추가했을 때..
- '핵심기능' 이 100개라면??
- 100개의 '핵심기능' 모두에 동일한 내용의 코드 추가 필요
- '핵심기능' 이 나중에 추가된다면?
- 항상 '부가기능' 추가를 신경써야 함
- '부가기능' 추가를 깜박한다면?
- 일부 API 수행시간이 추가되지 않음 → Top5 회원의 신뢰성 이슈
- '핵심기능' 수정 시
- 같은 함수 내에 '핵심기능'과 '부가기능'이 섞여 있음
- '핵심기능' 이해를 위해 '부가기능'까지 이해 필요
- '부가기능'의 변경이 필요하다면??
- '핵심기능'의 개수만큼 '부가기능'도 수정해 줘야 함
- '부가기능' 삭제
- 부가기능을 모듈화
- AOP (Aspect Oriented Programming) 를 통해 부가기능을 모듈화
- '부가기능'은 '핵심기능'과는 관점(Aspect), 관심이 다름
- 따라서 '핵심기능'과 또옥~!! 분리해서 '부가기능' 중심으로 설계, 구현 가능
-
스프링이 제공하는 AOP

- 어드바이스: 부가기능
- 포인트컷: 부가기능 적용위치