AOP(Aspect Oriented Programmin)
- 애플리케이션의 핵심적인 기능에서 부가적인 기능을 분리해서 애스팩트라는 독특한 모듈로 만들어서 설계하고 개발하는 방법
- OOP를 돕는 보조적인 기술(OOP를 대체하는 새로운 개념 아님)
- 애스펙트를 분리함으로써 핵심기능을 설꼐하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 역할.
- 애플리케이션을 다양한 측면에서 독립적으로 모델링하고, 설계하고, 개발 할 수 있도록 만들어준다.
- 전통적인 객체지향 기술의 설계 방법으로는 독립적인 모듈화가 불가능한 트랜잭션 경계설정과 같은 부가기능 존재.
이런 부가기능 모듈을 객체지향 기술에서 주로 사용하는 오브젝트와 다르게 '애스펙트(aspect)'라는 이름으로 부름
- 애스팩트란?
: 그 자체로 애플리케이션의 핵심기능을 담고 있지는 않지만, 애플리케이션을 구성하는 중요한 한가지 요소이며, 핵심기능에 부가되어 의미를 갖는 특별한 모듈
애플리케이션을 구성하는 한가지 측면이라고 생각할 수 있다.
어드바이스와 애스팩트컷을 갖는다.
(어디바이스 : 부가될 기능을 정의한 코드, 포인트컷: 어드바이스를 어디에 적용할 지를 결정)
- 오른쪽은 핵심기능 코드 사이에 침투한 부가기능을 독립적인 모듈인 애스펙스로 구분한 것 모습.
- 2차원적인 평면구조에서는 어떤 설계 기법을 동원해도 해결할 수 없었던 것을,
3차원 다면체 구조로 가져가면서 각각 성격이 다른 부가기능을 다른 면에 존재하도록 만듬.
독립된 측면에 존재하는 애스팩트로 분리한 덕에 핵심기능은 순수하게 그 기능을 담은 코드로만 존재하고 독립적으로 살펴볼 수 있도록
독립된 면에 존재하게 된다.
- 결국 런타임 시에는 왼쪽의 그림처럼 각 부가기능 애스펙트는 자기가 필요한 위치에 다이내믹하게 참여하게된다.
하지만 설계와 개발은 오른쪽 그림처럼 다른 특성을 띤 애스펙트들을 독립적인 관점으로 작성하게 할 수 있다.
AOP(Aspect Oriented Programmin)
'IT노트 > eGov&Spring F/W' 카테고리의 다른 글
스프링 프레임워크 강좌 (0) | 2015.02.20 |
---|---|
EJB design pattern free book download (0) | 2015.02.18 |
[IOC 제어의 역전] (0) | 2015.01.30 |
@SuppressWarning (0) | 2015.01.30 |
Spring Remoting: Remote Method Invocation (RMI) (0) | 2015.01.30 |