1.接口
package AOP2;
public interface Waiter {
void greetTo(String clientName);
void serveTo(String clientName);
}
2.target
package AOP2;
/**
*
* @author Administrator
*/
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 "+clientName+"...");
}
}
3.切面
package AOP2;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class PreGreetingAspect {
@Before("execution(* greetTo(..))")
public void beforeGreeting(){
System.out.println("How are you");
}
}
4.实现package AOP2;
import org.springframework.aop.aspectj.annotation.AspectJProxyFactory;
/**
*
* @author Administrator
*/
public class AspectJProxyTest {
public AspectJProxyTest() {
Waiter target = new NaiveWaiter();
//代理工厂
AspectJProxyFactory factory = new AspectJProxyFactory();
factory.setTarget(target);//设置目标对象
factory.addAspect(PreGreetingAspect.class);//添加切面类,此类必须是带@AspectJ标注的类
Waiter proxy = factory.getProxy();//生成织入切面的代理对象
proxy.greetTo("John");//通过代理对象来调用目标对象
proxy.serveTo("John");//完成AOP
}
}