Whiteship's Note

초간단 @Pointcut 과 @Advice 예제

Spring/Chapter 6 : 2007.04.02 15:28


@Aspect
public class CinemaAspect {

    @Pointcut("execution(* sellTicket(..))")
    public void sellTicketPointcut() {
    }

    @Before("aop.newStyle.aspect.CinemaAspect.sellTicketPointcut()")
    public void weblcomeAdvice(){
        System.out.println("안녕하세요. 어떤 영화를 보시겠습니까?");
    }
}

설정파일에 이 Aspect를 bean으로 등록합니다. pointcut의 이름에 해당하는 public void sellTicketPointcut() 부분에서 리턴타입은 항상 void여야 합니다. 접근지시자는 다른 Aspect에서 해당 포인트컷을 참조 할 수 있는 범위를 나타내게 됩니다. 일반적인 메소드 접근지시자와 동일하게 사용됩니다.

@Aspect 가 붙은 클래스들 끼리 상속을 하게 되면 어떻게 되나? - 포인트 컷과 어드바이스도 상속이 되는건가? 일단 지금은 초간단 이니까 바로 다음 글에 이어서 실험하도록 하겠습니다. [각주:1]

    <!-- @Aspect 시작 -->
    <aop:aspectj-autoproxy/>

    <bean id="myAspect" class="aop.newStyle.aspect.CinemaAspect" />

테스트 코드에서 sellTicket을 호출하게 되는 buyTicket을 호출 합니다.

    @Test
    public void sellTicket() {
        hein.buyTicket(cinema, movie);
    }

안녕하세요. 어떤 영화를 보시겠습니까?

원하는 결과를 확인할 수 있습니다.

  1. 이건 마치 무슨 '호기심 천국'이나 '스펀지 연구소'가 된 분위기가 납니다. 물론 쏠로로 진행하지만 말이죠.ㅋㅋ [본문으로]

'Spring > Chapter 6' 카테고리의 다른 글

6.2. @AspectJ support  (0) 2007.04.03
@Around 어드바이스 예제  (0) 2007.04.03
@AfterReturning 어드바이스 만들기  (0) 2007.04.03
@Pointcut Designator  (0) 2007.04.02
@Aspect 붙은 클래스끼리는 상속이 안 됩니다.  (0) 2007.04.02
초간단 @Pointcut 과 @Advice 예제  (0) 2007.04.02
Enabling @AspectJ Support  (0) 2007.04.02
6.3. Schema-based AOP support  (0) 2007.04.01
6.1. Introduction  (0) 2007.04.01
Spring 2.0 AOP  (2) 2007.03.27
Aspect Oriented Programming with Spring  (0) 2007.03.26
top




: 1 : ··· : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 :