1. 개요
Aspect Oriented Programming(관점 지향 프로그래밍)개발 분야에서 널리 알려진 객체 지향 프로그래밍(OOP)과 같은 일종의 프로그래밍 패러다임이다. OOP는 객체를 활용한 캡슐화 및 모듈화와 이들의 협력을 중점적으로 다룬다. 비슷하게 AOP는 관점의 측면에서 코드를 구성하는 방법론을 제시한다.
2. 설명
관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)은 프로그램의 핵심 기능(core concern)과 부가 기능(cross-cutting concern)을 분리하여 모듈화하는 프로그래밍 패러다임이다. 부가 기능에는 예시로 로깅, 보안, 트랜잭션 관리 등이 포함되며, 이러한 기능은 여러 모듈에 걸쳐 반복적으로 나타날 수 있다.- Aspect (관점): 부가 기능을 모듈화한 단위이다. 로깅, 인증, 예외 처리 등이 이에 해당한다.
- Join Point (조인 포인트): Aspect가 삽입될 수 있는 지점으로, 메소드 호출, 객체 생성, 예외 발생 등 다양한 실행 시점이 포함된다.
- Pointcut (포인트컷): Join Point 중에서 Aspect를 적용할 구체적인 지점을 명시하는 규칙 또는 표현식이다.
- Advice (어드바이스): 실제로 실행되는 부가 기능의 코드이다. 실행 시점에 따라 Before, After, Around로 구분된다.
- Weaving (위빙): Aspect를 프로그램의 지정된 지점에 삽입하는 과정이다. 위빙은 컴파일 시, 클래스 로딩 시, 또는 런타임에 수행될 수 있다.
3. 참조
- java 구현체
- https://eclipse.dev/aspectj/doc/latest/index.html
- https://docs.spring.io/spring-framework/reference/core/aop/ataspectj.html
- c++ 구현체
https://cseweb.ucsd.edu/~wgg/CSE218/aop-ecoop97.pdf