Whiteship's Note

10. execution 포인트컷 사용하기

AOP : 2007. 1. 16. 18:44


8번9번에서 살표봤던 포인트컷들을 사용해 보겠습니다.

@AspectJ 를 이용한 초간단 AOP 예제를 살짝 변경하여 사용해 보겠습니다.
소스파일은 아래 압축 파일로 묶어 뒀습니다.

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

 

@Aspect

public class MannerAOP {

 

       @Before("execution(* set*(String))")

       public void confirmName(){

             System.out.println("이름을 세팅합니다.");

       }

 

       @Before("execution(* set*(java.util.GregorianCalendar))")

       public void confirmBirthday(){

             System.out.println("생일을 세팅합니다.");

       }

 

       @Before("execution(* set*(int))")

       public void confirmAge(){

             System.out.println("나이를 세팅합니다.");

       }

}


세개의 Advice모두 익명 포인트 컷(= In-place 포인트 컷)으로 표현하였습니다.

첫번째 Advice는 리턴타입은 아무거나 상관 없고 메소드의 이름이 set으로 시작하고 아규먼트가 하나이며 String타입인 메소드를 나타낸 것입니다. 그것에 해당하는 것이 현재 name밖에 없기 때문에 Advice에는 "이름을 세팅합니다."를 출력하도록 했습니다.

세번째 것도 첫번째 것과 동일하며 조금 다른건 두번째 것입니다. 두번째 것은 아규먼트의 타입을 패키지 경로까지 포함해서 적어줬습니다. 기본으로 import되지 않는 패키지의 클래스들은 패키지 경로까지 써주어야 합니다.
top

Write a comment.