public interface Waiter {
public void greetTo(String clientName);
public void serveTo(String clientName);
}
public class NaiveWaiter implements Waiter{
@Override
public void greetTo(String clientName) {
System.out.println("NaiveWaiter:greet to "+clientName+"....");
}
@Override
public void serveTo(String clientName) {
System.out.println("NaiveWaiter:serving to "+clientName+"....");
}
}
@Aspect
public class PreGreetingAspect {
@Before("execution(* greetTo(..))")
public void beforeGreeting() {
System.out.println("How are you");
}
}
public class AspectJProxyTest {
public static void main(String[] args) {
Waiter target = new NaiveWaiter();
AspectJProxyFactory factory = new AspectJProxyFactory();
factory.setTarget(target);
factory.addAspect(PreGreetingAspect.class);
Waiter proxy = factory.getProxy();
proxy.greetTo("join");
proxy.serveTo("join");
}
}
<!-- 基于@AspectJ切面的驱动器 -->
<aop:aspectj-autoproxy/>
<!-- 自动代理创建器,自动将@AspectJ注解切面类织入到目标Bean中 -->
<bean class="org.springframework.aop.aspectj.annotation.<strong>AnnotationAwareAspectJAutoProxyCreator</strong>" />