范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

静态代理和动态代理

  1.什么是代理
  很多人肯定听过和看到过飞机票代理点,火车票代理点。那这些代理点干得事情就是帮航空公司,火车站出售火车票的工作。它们算是一个中间商。实际的服务不是由它们提供。而是由真正的服务商提供。通过这个例子我们可以知道什么是代理:具有目标对象的功能,同时还能对服务进行增强。2. 什么是静态代理和动态代理?
  代理模式是 Java 设计模式,它的特征是代理类与委托类有相同的接口。代理类主要负责委托类预处理消息、过滤消息、把消息传递给委托类、以及事后处理消息。代理类与委托类之间捅穿会存在关联关系。一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不是真正服务的实现。而是通过调用委托类的方法来提供相应的服务。这个和上面说的现实生活中的例子完全符合
  根据代理的创建时期可以分为两种:静态代理由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。静态代理事先知道要代理的是什么。动态代理在程序运行时,运用反射机制动态创建而成。动态代理不知道要代理什么东西,只有在运行时才知道3. 静态代理
  上代码:public interface TestService {      void say(String msg);  } 复制代码public class TestServiceImpl implements TestService{     @Override     public void say(String msg) {         System.out.println(msg);     } } 复制代码public class ProxyTestService implements TestService{      private TestService testService;      public ProxyTestService(TestService testService) {         this.testService = testService;     }      @Override     public void say(String msg) {          //预处理         System.out.println("before calling say");         //调用被代理的testService         testService.say(msg);         //事后处理         System.out.println("after calling say");       } } 复制代码
  执行:public class Test {      public static void main(String[] args) throws Exception{        TestService service = new TestServiceImpl();        TestService service1 = new ProxyTestService(service);        service1.say("ssssssss");     }  } 复制代码
  通过上面可以看出来静态代理:就是在代理类中进行做数据的前后处理。这里的前后处理就是对功能的增强4. 动态代理
  与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler接口提供了生成动态代理类的能力。JDK原生代理上代码:public interface TestService { void say(String msg); } public class TestServiceImpl implements TestService{ @Override public void say(String msg) { System.out.println(msg); } } 复制代码 public class TestInvocationHandler implements InvocationHandler { private Object target; public TestInvocationHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(proxy.getClass().getName()); return method.invoke(target,args); } } 复制代码 public class Test { public static void main(String[] args) throws Exception{ TestService testService = (TestService)Proxy.newProxyInstance(Test.class.getClassLoader(), new Class<?>[]{TestService.class}, new TestInvocationHandler(new TestServiceImpl())); testService.say("sssss"); } } 复制代码cglib代理public class EnhancerForSampleClassApplication {      public static void main(String[] args) {          Enhancer enhancer = new Enhancer();         enhancer.setSuperclass(A.class);         enhancer.setCallback(new MxsmPoxy());         A a = (A)enhancer.create();         a.aaa("bbb");     }     public interface A{          public void aaa(String aaa);     }     public static  class MxsmPoxy implements MethodInterceptor{         @Override        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {             System.out.println( method.getName());            System.out.println(args[0]); 			//这里做什么又实现者来定            return null;        }    } } 复制代码
  cglib的妙用还可以参照Spring核心包的里面的代码。通过去研究Spring代码对Cglib的使用能够更加清晰的认识。
  Tips:RPC的调用很多都是基于动态代理实现的,例如Dubbo。5. 总结代理中的功能增强对于静态代理和动态代理上面的代码而言就是打印信息,你不单单能够执行代理的功能还能对其进行其他的操作。动态代理和静态代理区别在于功能是否编译前就确定了。JDK原生代理只能用于接口,Cglib代理接口和类都可以

骨传导与动圈双模式设计,DacomG100运动蓝牙耳机对于爱运动的小伙伴来说,一款佩戴舒适不易掉落的蓝牙耳机可以带来更好的音乐体验。目前市场上可以选择的耳机款式非常多元,主打在运动状态中使用的就有骨传导耳机,喜欢更佳音质的就有动圈耳机看了大家的评价,我终于知道魅族为什么没落了!魅族19能翻身吗?要说国内智能手机的鼻祖,不是华为也不是小米而是现在已经没落的魅族,估计很多00后都没有听过这个手机品牌,但早在零几年,魅族M8的地位和iPhone4S的差不多,这样说大家应该可以理西屋无叶中空高智能高速吹风机呵护你的发丝最近种草了一款高颜值的吹风机,这款西屋无叶中空高智能高速吹风机,颜值就很漂亮,星野紫真的太高级了。特别显华丽高级。拿在手上触感很舒服,整体上手感十分小巧跟轻便,出门旅行可以随身携带苹果发布会即将召开新iPhone将于今年3月发布中关村在线消息据爆料,苹果将于今年三月到四月间举行新品发布会,小屏手机iPhoneSE即将发布。外媒称,新款的iPhoneSE在外观设计方面与前代相似,重点升级了处理器,以及支持5工信部鼓励新能源与智能网联汽车等领域建设产品质量大数据公共服务平台来源人民网人民网北京1月10日电(申佳平)据工业和信息化部官网消息,为进一步引导制造业企业深化新一代信息技术与质量管理融合,以数字化赋能企业全员全过程全方位质量管理,提升产业链供应2021年冲高小鹏汽车迎来爆发之年若要问2021年造车新势力中谁的势头最猛?毫无疑问,小鹏汽车能摘得一席。从去年10月开始,小鹏汽车火力全开不仅连续拿下三个月销冠军,而且在年终榜单上最终称王。数据显示,小鹏汽车12北京冬奥列车高铁5G超高清演播室上线在首趟北京冬奥列车瑞雪迎春上,还搭载着由中央广播电视总台联合国铁集团等单位共同打造的北京冬奥列车高铁5G超高清演播室。伴随着列车首发,北京冬奥列车高铁5G超高清演播室也正式上线。这刷题LeetCode102。二叉树层序遍历来源力扣(LeetCode)链接httpsleetcodecn。comproblemsbinarytreelevelordertraversal二叉树的前中后序遍历题目描述给你一个北京公交将开展无人驾驶道路测试,已应用智能调度系统IT之家1月10日消息,根据新京报消息,今年的北京市政府工作报告提出,要编制轨道交通第三期建设规划,加速多网融合,加快轨道微中心的建设。北京市人大代表北京公交集团党委书记董事长王春岚图FREE产能提速1月10日前下定春节前可提车12月31日,罗振宇2022时间的朋友跨年演讲在成都开讲,作为高端电动汽车国家队,岚图汽车把最佳用户体验作为企业目标,开启一系列的运营模式技术产品服务等创新实践,让罗振宇不由感叹央特斯拉车主用电动车挖矿月入5000,到底是赚了还是亏了?众所周知,挖矿最大的成本是电费和显卡投资,但是如果能白薅电动车免费充电的羊毛,用电动车挖矿也是一个超前的想法。而且,已经有人这么干了。1月10日消息,据报道,加密货币的价格升温,挖
花小的钱就能享受大满足?这三款合资紧凑型SUV性价比十足国产车的崛起让大家尝到花少钱办大事的甜头,如今伴随着车市寒冬和激烈的竞争,合资车企也玩起了性价比,某些紧凑型SUV也降到十来万价格。今天这三款车型就非常具有性价比,价格也不比自主品618开门红,realme晋升市场前三,性价比干翻小米?每年的618年中大促,各大手机厂商都会打成一片血海,毕竟年底要厂家是用销量来说话的,一个618,一个双十一都是厂家重要的营销活动。去年的618,销量前五名是苹果小米荣耀华为和viv3。0T9AT坦克600遭泄密!内部人员爆料更多信息,新车将于8月发布近日,有网友爆料出一张全新坦克新车的工厂内部图,从新车上面的车牌上挂着坦克600的字样不难猜测,这就是坦克600的新车。图上的新车与坦克300采用了截然不同的前脸样式,但是与坦克7余音和水月雨一个不俗听感,另一个划时代的性价比水月雨在耳机界可以算是特立独行的存在,其包装风格融合了年轻人无法抗拒的二次元文化,标签属性强烈同样在实质的产品方面,余音也有着自己的涵养和分量,仅需199就可以入手,它成功吸引了我主打6座还带沃德十佳发动机,福特领裕将是多口之家福音?对多口之家来说,五座车一般不够用,7座车不仅年检麻烦后排还鸡肋,6座车的出现给了这些家庭更多的选择。不仅6年免检,中间这排因为只有两个座位,座椅中间过道很宽,后排也不会过于拥挤,整新款宝马X3曝光,轴距依然没加长,能否反超奔驰GLC?即使到了2021年,SUV车型热度依旧不衰减。而想要占据这份大蛋糕,除了拥有出色产品力之余,还要顺应市场规则不断推陈出新保持车型新鲜度。新款宝马X3便是其中一员,在过去一直霸占销量这次又会加价多少?新款埃尔法双擎正式上市,售83。9万起最近的三胎话题热度真的是非常高,并做出了针对三胎家庭用品的恶搞图片,例如床房子以及各种生活所需配。但回归到现实,目前很多家庭都选择了七座车型以应对二胎和三胎的到来,所以,MPV和七还徘徊在思域领克03高尔夫之间?传祺影豹野性觉醒实力出击紧凑型运动轿车前有思域高尔夫这种老辈分车型,后有菲斯特MG6新生一代的小钢炮,而最近一只豹子来势汹汹,试图要从这片年轻人市场抢夺一份羹。没错,它就是最近备受关注的广汽传祺影豹。影豹探店丨实拍长安欧尚X7Geeker版,双摄人脸智控系统有何价值?近日,期待已久的长安欧尚X7GeeKer版新车终于到店了。作为中国品牌SUV新三好生,欧尚X7GeeKer版已于4月9日上市,新车售价11。49万元,上市尝鲜价低至10。89万元。女学员崩溃大哭,大巴车7人受伤遇到这种情况直接报警恶意别车到底有多可恨?近日,黑龙江齐齐哈尔的科三考场上,一名女子距离成功通过科三只有一步之遥的时候,被前方的车辆别车,导致科三没过,让该名女子当场奔溃。从现场的视频来看,女子一边跺驰骋冰原之后,恒驰汽车再度奔赴烤场对于恒驰汽车的一举一动,尤其是新车量产进度的推进,业内可谓是给予了密切的关注。从当初恒驰6车首发,再到恒驰9款车型齐聚2021上海车展,恒大造车可谓是牵动着无数消费者的心。当然,实