@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 가 붙은 클래스들 끼리 상속을 하게 되면 어떻게 되나? – 포인트 컷과 어드바이스도 상속이 되는건가? 일단 지금은 초간단 이니까 바로 다음 글에 이어서 실험하도록 하겠습니다. [footnote]이건 마치 무슨 ‘호기심 천국’이나 ‘스펀지 연구소’가 된 분위기가 납니다. 물론 쏠로로 진행하지만 말이죠.ㅋㅋ[/footnote]

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

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

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

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

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

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