每日一个技术点之动态代理
家电修理 2023-07-16 19:17www.caominkang.com电器维修
cglib和jdk 动态代理的区别?
- cglib 用的是asm字节码框架,而jdk用的是反射机制,这就导致了cglib创建对象慢但执行速度快 jdk创建对象快,但执行相对较慢
- 经过反编译发现jdk 动态代理是创建了一个继承了Proxy类的代理类并实现了接口,($class0 extends Proxy implements interfaceA )其中class0中聚合了很多接口中的方法,通过method.invoke反射机制实现调用。
- cglib 动态代理无需依赖接口,而需要依赖cglib库,jdk则需要依赖接口,并且不依赖库即可实现。
用途一般对于eb应用来说,jdk动态代理用途较广,针对没有目标接口的要代理的类则可以选择cglib动态代理
------------------------------- 2022.8.17--------------------------------------------------------------------------
如何使用?(以jdk 动态代理为例)jdk动态代理强依赖于接口,所以我们需要创建一个接口
public interface MyActionInterface { void myAction(String username); }
接口都是要实现的,之后创建一个实现类
public class MyActionImpl implements MyActionInterface{ @Override public void myAction(String username) { System.out.println("action = " + username); } }
最关键的一步来了,创建proxy代理handler
public class MyProxy implements InvocationHandler{ private Object target; public MyProxy(Object target) { this.target = target; } public MyProxy(Class> targetClass) { try { this.target = targetClass.neInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Object neObject() { if (target == null) { thro ne RuntimeException("代理对象为空"); } return Proxy.neProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) thros Throable { // TODO Auto-generated method stub //预处理 Object result = method.invoke(target, args); //处理结果 return result; } }
调用
public class ProxyTest { public static void main(String[] args) { //注意返回的代理对象为接口对象,需要用接口对象作为返回类型 MyActionInterface impl = (MyActionInterface)ne MyProxy(MyActionImpl.class) .neObject(); impl.myAction("zyg"); } }原理?源码?
https://baijiahao.baidu./s?id=1678997916718732701&fr=spider&for=pc
上一篇:ps更改字体大小技巧分享
下一篇:Win7网页超链接打不开怎么办?点击超链接不会加
空调维修
- 海信电视维修站 海信电视维修站点
- 格兰仕空调售后电话 格兰仕空调维修售后服务电
- 家电售后服务 家电售后服务流程
- 华扬太阳能维修 华扬太阳能维修收费标准表
- 三菱电机空调维修 三菱电机空调维修费用高吗
- 美的燃气灶维修 美的燃气灶维修收费标准明细
- 科龙空调售后服务 科龙空调售后服务网点
- 华帝热水器维修 华帝热水器维修常见故障
- 康泉热水器维修 康泉热水器维修故障
- 华凌冰箱维修电话 华凌冰箱维修点电话
- 海尔维修站 海尔维修站点地址在哪里
- 北京海信空调维修 北京海信空调售后服务
- 科龙空调维修 科龙空调维修故障
- 皇明太阳能售后 皇明太阳能售后维修点
- 海信冰箱售后服务 海信冰箱售后服务热线电话
- 海尔热水器服务热线