Whiteship's Note

<aop:after-returning> 어드바이스에서 리턴값 받아오기

Spring/Chapter 6 : 2007.04.06 11:33


Aspect 역할을 할 클래스(이름을 Aspect로 했습니다. 꼭 그래야 하는건 아니죠;;)에 After Returning 때 weaving 될 어드바이스를 일반 메소드로 정의합니다.

public class Aspect {

    public void welcome(){
        System.out.println("어서 오세요. 무엇을 도와드릴까요?");
    }

    public void confirm(){
        System.out.println("확인하기");
    }

    public void afterSellTicket(Ticket ticket){
        System.out.println("감사합니다. " + ticket.getMovie().getName() + "을 구매 하셨습니다.");
    }
}

그리고 설정파일에 어드바이스를 등록합니다.

<aop:aspect id="cinema" ref="aspect">
            <aop:before method="welcome" pointcut-ref="sellTicket" />
            <aop:before method="welcome" pointcut-ref="checkTicket" />
            <aop:after-returning method="afterSellTicket" pointcut-ref="sellTicket" returning="ticket"/>
</aop:aspect>

@AfterReturning 어드바이스 만들기 이것과 거의 동일한 예제입니다. 결과는 무난히 리턴값을 가져온 것을 확인할 수 있습니다.

    @Test
    public void sellTicket() {
        cinema.sellTicket(movie, new Date());
    }

어서 오세요. 무엇을 도와드릴까요?
감사합니다. 공공의적을 구매 하셨습니다.
top