AOP (Aspect Oriented Programming)
AOP (Aspect Oriented Programming)
관점 지향 프로그래밍이라고도 불리는 AOP는 로직을 핵심, 부가적인 관점을 나누어 각각 모듈화하는 프로그래밍이다.
- 핵심적인 관점 : 핵심 비즈니스 로직
- 부가적인 관점 : DB 연결, 로깅, 파일 입출력 등
AOP를 통해 스프링 IoC와 연동하여 중복 코드, 객체 간 복잡도 등에 대한 해결책을 지원한다.
- 중복되는 코드를 Aspect로 모듈화하여 재사용성을 높일 수 있다.
- 중복되는 코드들을 **흩어진 관심사(Crosscutting Concerns)**라고 칭한다.
- 실행 전 후 특정 기능 추가(method의 실행시간 체크 등), response 정보 저장 등
Spring Bean(스프링 빈)에만 적용 가능하며, 접근 제어와 부가 기능 추가를 위해 proxy패턴 기반의 구현체를 사용한다.
AOP 구성 요소
출처 : cloudinary
Aspect
- 중복되는 코드(흩어진 관심사)를 모듈화한 것
Target Object
- Aspect가 적용되는 클래스, 메서드 등의 객체
Proxy
- Aspect와 Target을 연결해주는 클래스
Join Point
- Advice가 적용되는 지점 (실행 전 후 특정 기능 추가와 관련)
Point Cut
- JointPoint를 구체화한 Advice가 실행 될 지점
Advice
- Joint Point, Point Cut에서 실행되는 코드, 실질적인 구현부
Weaving
- Joint Point에 Advice를 적용하는 방법
AOP (Aspect Oriented Programming)
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.