动态代理
来源:互联网 发布:杭州商学院网络 编辑:程序博客网 时间:2024/04/27 12:12
动态代理:
动态代理,我的理解,效果上 就是对原来的函数 增加处理逻辑,而不改变原来的代码。需要代理的类包括两种方式,一种是有实现接口的类,一种是没有实现接口的类。
前一种:jdk1.3以后就有实现,后一种通过CGLIB(http://cglib.sourceforge.net)实现。CGLIB的原理是对类的字节码进行修改,重新生成新的字节码(和重新编写代码,编译差不多,区别就是减少了多余的代码);
接口动态代理的例子:
//商业接口
public interface BusinessInterface {
public void processBusiness();
}
//商业接口实现类
public class BusinessObject implements BusinessInterface {
private Logger logger = Logger.getLogger(this.getClass().getName());
public void processBusiness(){
//business processing
System.out.println(“here is business logic”);
}
}
//动态代理类
public class LogHandler implements InvocationHandler {
private Logger logger = Logger.getLogger(this.getClass().getName());
private Object delegate;
public LogHandler(Object delegate){
this.delegate = delegate;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object o = null;
try {
logger.info("method stats..." + method);
o = method.invoke(delegate,args);
logger.info("method ends..." + method);
} catch (Exception e){
logger.info("Exception happends...");
//excetpion handling.
}
return o;
}
}
//动态代理调用
BusinessInterface businessImp = new BusinessObject();
InvocationHandler handler = new LogHandler(businessImp);
BusinessInterface proxy = (BusinessInterface) Proxy.newProxyInstance(
businessImp.getClass().getClassLoader(),
businessImp.getClass().getInterfaces(),
handler);
proxy.processBusiness();
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 温州IT主管联盟酒会的收获
- Web.Config文件详解
- 学习Linux的七点忠告
- 把当前web页面上的所有图片复制到特定目录
- 只需8分钟,RM直接刻录成影碟机里可播放的VCD
- 动态代理
- Linux下软件的安装与卸载
- web.xml详解
- 重读《设计模式》之学习笔记(五)--我对COMPOSITE模式的理解
- linux基本操作知识
- 童趣体验
- 什么是RFID?
- 北京地区主要旅行社目录
- C#中通过DataGrid显示隶属关系