초간단 Schema 기반 Spring AOP
먼저 Aspect 역할을 할 클래스를 만듭니다. 어드바이스를 메소드로 정의해 둘 클래스입니다.
public class Aspect {
public void welcome(){
System.out.println("어서 오세요. 무엇을 도와드릴까요?");
}
}
이제 xml 설정파일로 가서 이 클래스를 빈으로 등록을 하고 어스팩트를 만들 때 사용하도록 합니다.
<!-- aop -->
<bean id="aspect" class="aop.newStyle.aspect.Aspect" />
<bean id="aspect" class="aop.newStyle.aspect.Aspect" />
<aop:config>
<aop:aspect id="cinema" ref="aspect">
<aop:pointcut id="sellTicket"
expression="execution(* sell*(..))" />
<aop:before method="welcome" pointcut-ref="sellTicket" />
</aop:aspect>
</aop:config>
포인트컷 표현식은 이전 @AspectJ 에서와 동일하게 사용할 수 있습니다.
@Test
public void sellTicket() {
cinema.sellTicket(movie, new Date());
}
public void sellTicket() {
cinema.sellTicket(movie, new Date());
}
다음과 같이 대상이 되는 메소드를 호출 하면 맨 위에 만든 애스팩트에 있는 메소드 중에서 advice에 등록한 메소드가 실행됩니다.