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
}
}