通知类型
前置通知、后置通知、异常通知、环绕通知、引入通知
BeforeAdvice
public interface Reception{
public void serveCustomer(String customerName);
}
public class ConcreteReception implements Reception{
public void serveCustomer(String customerName){
System.out.println("我正在服务客户:"+customerName);
}
}
public interface MethodBeforeAdvice{
void before (Method method,Object [] args,Object target);
//method目标类的方法,args目标实例的方法的入参,target为目标实例对象
}
import javal.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class GreetingBeforeAdvice implements MethodBeforeAdvice{
public void before(Method method,Object [] args,Object obj) throws Throweable{
String customerName=(String)args[0];
System.out.println("见到您真高兴:"+customerName+",请跟我来!");
}
}
public class TestBeforeAdvice{
public static void main(String args[]){
Reception target=new ConcreteReception();
BeforeAdvice advice=new GreetingBeforeAdvice();//前置通知
ProxyFactory pf=new ProxyFactory();//Spring代理工厂
pf.setTarget(target);
pf.addAdvice(advice);
Reception proxy=(Recception)pf.getProxy();//生成代理实例
proxy.serveCustomer("ACC");
}
}
前置通知、后置通知、异常通知、环绕通知、引入通知
BeforeAdvice
public interface Reception{
public void serveCustomer(String customerName);
}
public class ConcreteReception implements Reception{
public void serveCustomer(String customerName){
System.out.println("我正在服务客户:"+customerName);
}
}
public interface MethodBeforeAdvice{
void before (Method method,Object [] args,Object target);
//method目标类的方法,args目标实例的方法的入参,target为目标实例对象
}
import javal.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class GreetingBeforeAdvice implements MethodBeforeAdvice{
public void before(Method method,Object [] args,Object obj) throws Throweable{
String customerName=(String)args[0];
System.out.println("见到您真高兴:"+customerName+",请跟我来!");
}
}
public class TestBeforeAdvice{
public static void main(String args[]){
Reception target=new ConcreteReception();
BeforeAdvice advice=new GreetingBeforeAdvice();//前置通知
ProxyFactory pf=new ProxyFactory();//Spring代理工厂
pf.setTarget(target);
pf.addAdvice(advice);
Reception proxy=(Recception)pf.getProxy();//生成代理实例
proxy.serveCustomer("ACC");
}
}