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
Posted by wychoi
,