Category
show
전체 (775)
웹표준, 웹접근성™ (5)
웹프로그래밍™ (360)
웹기획™ (0)
웹디자인™ (5)
서버™ (32)
데이터베이스™ (43)
개발자료 (9)
트랜드 (60)
Study English (2)
블루비 (70)
오피스 다이어리 (19)
Textcube (2)
이슈 (20)
컴퓨터 악세사리 (18)
엔터테인먼트 (24)
좋은글 (73)
재테크 (1)
이벤트 (4)

AOP(Aspect oriented Programming)

웹프로그래밍™/AOP 2006/04/22 12:22 by 블루비 Total 405 : Today 3 : Yesterday 0

원문 : http://blog.naver.com/cookie_00/80023046444

AOP(Aspect oriented Programming)은 OOP의 개념처럼 처음 접하는 경우에는 좀 생소한 개념이라고 생각된다. 하지만 알고 나면 꽤 편리하고, 좀 더 알면 꽤 재밌는 기능일 것이다.

쉽게 이런 예를 생각해 보면 된다.

여러장의 종이를 자르는 경우에 한장씩 순서에 맞게 자르는 방법이 있는 반면, 한번에 여러장의 종이를 겹쳐두고 자르는 방식도 있다.

이 경우 후자의 방식이 AOP라고 생각하면 된다. 즉 하나를 실행할 때 여러개의 모듈을 동시(? - 정확히는 순서가 있다.)에 실행하는 방식이라고 이해하면 된다.

AOP상에서는 서비스는 독립적으로 존재하는 서비스 이고, 이를 탑재하고 있는 여러개의 공통 모듈 위에 특정 서비스를 올려 놓는 형태가 된다. (쉽게 생각하자면 JVM이 여러 OS에 탑재 되어서 실행되는 방식과 동일한 방식이라고 생각해도 무방할 듯 하다)

AOP에 가장 적절한 예는 아마도 Logging 시스템 일 것이다. Logging은 시스템 내에서 거의 모든 경우에 적용하긴 하지만, 실제로 특정한 비즈니스 로직과는 전혀 관련이 없다. 만일 AOP방식으로 구현한다면 다음과 같은 특징을 가지게 된다.

l 실제 비즈니즈 로직의 구현을 담당하는 Domain Object 아무런 로그 관련 객체 정보가 없다.

l 자바의 경우 Domain Object 특정 메쏘드를 호출하는 시점에 지정된 다른 서비스가 실행된다.

AOP방식의 프로그래밍은 위의 그림들 처럼 레퍼런스를 가지고 있는 의존적인 관계로 구성하는 것이 아니라, 특정 서비스를 호출 기반이 되는 여러 개의 다른 서비스가 같이 실행되는 것이다.

Spring에서의 AOP

Spring에서의 AOP는 두 가지에 의존한다. 인터페이스 기반의 프로그래밍을 하는 경우에는 JDK java.lang.reflect Proxy를 이용해서 AOP를 이용하는 방식과 CGLIB를 이용해서 사용하는 방식으로 구성된다. 우선 AOP를 제대로 이해하기 위해서는 java.lang.reflect Proxy를 이용해서 서비스 기반의 프로그램이 어떻게 돌아가는지 이해하는 것이 도움이 된다.

2006/04/22 12:22 2006/04/22 12:22
TAG

TRACKBACK :: http://blueb.net/blog/trackback/417

Leave a Comment
[로그인][오픈아이디란?]
1  ... 590 591 592 593 594 595 596 597 598  ... 775 

달력

«   2008/11   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30