- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java动态代理的应用——动力节点
动态代理其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定的classloader将 class byte加载进系统,最后生成这样一个类的对象,并初始化该对象的一些值,如invocationHandler,以即所有的接口对应的Method成员。 初始化之后将对象返回给调用的客户端。这样客户端拿到的就是一个实现你所有的接口的Proxy对象。请看实例分析:代码如下package xy; public interface BusinessProcessor { public void processBusiness();} 代码如下package xy;/** * 业务处理类 * @author fanshadoop * */public class BusinessProcessorImpl implements BusinessProcessor { @Override public void processBusiness() { System.out.println(processing business.....); } }代码如下package xy; import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/** * 业务代理类 * @author fanshadoop * */public class BusinessProcessorHandler implements InvocationHandler { private Object target = null; BusinessProcessorHandler(Object target) { this.target = target; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out .println(You can do something here before process your business); Object result = method.invoke(target, args); System.out .println(You can do something here after process your business); return result; } }代码如下package xy; import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.lang.reflect.Proxy; public class Test { /** * @param args */ public static void main(String[] args) { BusinessProcessorImpl bpimpl = new BusinessProcessorImpl(); BusinessProcessorHandler handler = new BusinessProcessorHandler(bpimpl); BusinessProcessor bp = (BusinessProcessor) Proxy.newProxyInstance( bpimpl.getClass().getClassLoader(), bpimpl.getClass() .getInterfaces(), handler); cessBusiness(); System.out.println(bp.getClass().getName()); printClassDefinition(bp.getClass()); } public static String getModifier(int modifier) { String result = ; switch (modifier) { case Modifier.PRIVATE: result = private; case Modifier.PUBLIC: result = public; case Modifier.PROTECTED: result = protected; case Modifier.A
您可能关注的文档
最近下载
- 2020年教学能力大赛现场提问题目及答题要点.docx
- 上浆、挂糊和勾芡.docx VIP
- (高清版)DB34∕T 4574-2023 建设工程文件收集与归档标准.pdf VIP
- 汽车发动机检测与维修教学课件作者秦胜项目六发动机电控系统各传感器检测任务一:空气流量计(G70)的检测课件.doc VIP
- 新课改下高中英语教学的困惑与对策.doc
- 《刘慈欣中英双语科幻经典 青少版1 流浪地球》读书笔记思维导图PPT模板下载.pptx VIP
- 《刘慈欣中英双语科幻经典(青少版)4:山》读后感1000字.docx VIP
- 对标中央八项规定锲而不舍狠抓落实PPT2025中央八项规定精神学习教育课件.pptx VIP
- 高中化学必修二方程式总结-.doc
- 《文化与翻译》文化负载词的处理.ppt VIP
文档评论(0)