面向切面编程
切面:
定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务。
最常见的是事务控制。
代理模式是AOP的原型。
要实现代理,必须定义接口,每个业务类需要一个代理类。
动态代理:
利用反射,实现invokationHandler类.
Proxy.newProxyInstance(delegate.getClass().getClassLoader(),delegate.getClass.getInterface(),this);
public class LogHandler implements InvocationHandler{
Logger logger = Logger.getLogger(this.getClass().getName());
Object delegate;//代理对象
public Objcet bind(Object delegate){
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.gatClass().getClassLoader(),delegate.getClass().getInterface(),this);
}
public Object invoke(Object proxy,Method method,Object[] args) throws Trowable{
logger.log(Level.info,method.getName()+"开始运行。。。");
Object result = method.invoke(delegate,args);
logger.log(Level.info,method.getName()+"结束运行。。。");
return result;
}
}