Whiteship's Note

6. Join Points and Pointcuts

AOP : 2007.01.12 17:51


참조 : http://www.eclipse.org/aspectj/doc/released/progguide/quick.html

Advice의 종류는 이전에 살펴 보았고 Join Point들은 위 링크에서 볼 수 있습니다. 위 링크에서 볼 수 있는 Join Point들은 AspectJ에서 지원 해주는 것들이고 Spring에서는 저 중에서 Method execution만 지원합니다. 이 내용은 Spring Reference 6.2.3.1 에서 확인 할 수 있습니다.

AspectJ In Action 2.4.2 에 나와있는 예제 소스 중에 실행 하는 소스의 모든 Join Point들에 before advice와 after advice를 적용할 수 있는 aspect 소스가 있습니다. 소스는 다음과 같습니다.

public aspect JoinPointTraceAspect {

       private int _callDepth = -1;

 

       pointcut tracePoints() : !within(JoinPointTraceAspect);

 

       before() : tracePoints() {

             _callDepth++;

             print("Before", thisJoinPoint);

       }

 

       after() : tracePoints() {

             print("After", thisJoinPoint);

             _callDepth--;

       }

 

       private void print(String prefix, Object message) {

             for (int i = 0, spaces = _callDepth * 2; i < spaces; i++) {

                    System.out.print(" ");

             }

             System.out.println(prefix + ": " + message);

       }

}

pointcut tracePoints() 는 Pintcut의 이름을 정의한 부분이고
!within(JointPointTraceAspect)는 JoinPointTraceAspect 클래스 이외의 모든 Joint Point들을 Pointcut으로 묶었습니다.

위 소스코드를 이 전에 실행 시켜 보았던 AspectJ를 사용한 초간단 AOP 예제에 같이 두고 돌려보면 콘솔창에 다음과 같이 여러 Join Point를 볼 수 있습니다.

more..

top




: 1 : ··· : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : ··· : 40 :