programming paradigm - AOP (Aspect Oriented Programming)
영역 지향 프로그래밍 또는 국면 지향 프로그래밍
- 프로그램의 영역이 수행 프로그램의 컴파일 방법을 결정하는 프로그래밍 방법
Aspect : 프로그램의 성격을 나타내는 서브 프로그램, 단위 모듈
실예)
- 단위 모듈(로깅, 예외처리, 트랜잭션, 보안 등)을 설정파일로 로직의 수정없이 적용
- plugin
AOP를 지원하는 패턴
DI (Dependency Injection) 또는 IoC (Inversion of Control)
- 코드의 의존성을 설정 (DI Tool)
- 코드의 의존성을 제거 (DI Pattern)
- 불필요한 의존도를 줄여 직교성을 높임
DI 종류
- 생성자 기반 DI
- Setter 기반 DI
- Annotation 기반 DI
- 설정파일 기반 DI
AOP를 지원하는 툴
AspectJ
- compile된 bytecode에 대한 re-compile을 통한 새로운 bytecode 작성으로 인한 AOP가 갖는 성능 저하의 최소화
- pointcut, advisor 의 직접적인 선언을 이용한 보기 쉬운 코드작성
참고)
- 프로그램의 영역이 수행 프로그램의 컴파일 방법을 결정하는 프로그래밍 방법
Aspect : 프로그램의 성격을 나타내는 서브 프로그램, 단위 모듈
실예)
- 단위 모듈(로깅, 예외처리, 트랜잭션, 보안 등)을 설정파일로 로직의 수정없이 적용
- plugin
AOP를 지원하는 패턴
DI (Dependency Injection) 또는 IoC (Inversion of Control)
- 코드의 의존성을 설정 (DI Tool)
- 코드의 의존성을 제거 (DI Pattern)
- 불필요한 의존도를 줄여 직교성을 높임
DI 종류
- 생성자 기반 DI
- Setter 기반 DI
- Annotation 기반 DI
- 설정파일 기반 DI
AOP를 지원하는 툴
AspectJ
- compile된 bytecode에 대한 re-compile을 통한 새로운 bytecode 작성으로 인한 AOP가 갖는 성능 저하의 최소화
- pointcut, advisor 의 직접적인 선언을 이용한 보기 쉬운 코드작성
참고)
- Pointcut : AOP가 적용되는 시점을 정의
- Advice : Pointcut과 연동되어 AOP가 적용될 method를 의미
- Advisor : Point + Advice로 정의된 class를 의미
댓글
댓글 쓰기