2014년 4월 29일 화요일

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 의 직접적인 선언을 이용한 보기 쉬운 코드작성

 참고)
  • Pointcut : AOP가 적용되는 시점을 정의
  • Advice : Pointcut과 연동되어 AOP가 적용될 method를 의미
  • Advisor : Point + Advice로 정의된 class를 의미
Spring AOP





댓글 없음:

댓글 쓰기