当前位置: 首页 > news >正文

宁波手机网站开发学习软件

宁波手机网站开发,学习软件,京津冀协同发展意义,网站建设经验心得我的JDK动态代理流程 我梳理的动态代理流程大约是: 如果每一个框架都有自己的BPP,且自己的BPP中都有自己的wrapIfNecessory,那样可能就是一个BPP一个代理类。但通常应该都是各自的框架以提供 Advisior(切面)的方式&am…

我的JDK动态代理流程

我梳理的动态代理流程大约是:

  1. 如果每一个框架都有自己的BPP,且自己的BPP中都有自己的wrapIfNecessory,那样可能就是一个BPP一个代理类。但通常应该都是各自的框架以提供 Advisior(切面)的方式,让AOP的BPP去处理他们的Advisior。

  2. BeanPostProcessor 处理bean的时候,会找到这个bean匹配上的的advisior(切面)的集合。

  3. ProxyFactory 拿到adivisor的集合和目标类之后

    1. 设置当前代理的 advicisor、设置当前代理的目标对象 targetClass,设置当前代理的接口类
    2. 使用Jdk或者cglib动态代理创建代理类createAopProxy().getProxy();​​
  4. 生成代理类:

    1. JDK动态代理

      1. JDK动态代理要求被代理类必须实现方法,否则报错。原因当然和JDK动态代理的原理有关系了。

        public Object getProxy(@Nullable ClassLoader classLoader) {return Proxy.newProxyInstance(classLoader, this.proxiedInterfaces, this);
        }
        
      2. 生成代理类,

        public Class<?> apply(ClassLoader loader, Class<?>[] interfaces) {。。。byte[] proxyClassFile = ProxyGenerator.generateProxyClass(proxyName, interfaces, accessFlags);。。。
        }
        
      3. 生成代理类

        1. 将所有方法包装成ProxyMethod对象

          1. 将Object类中的hashCode、equals、toString方法包装成ProxyMethod对象
          2. 获取代理类接口列表
          3. 遍历每个接口的每个方法,并包装成ProxyMethod对象
        2. 为代理类组装各种字段信息和方法信息

          1. 添加构造器方法,该构造器参数为InvocationHandler类型
          2. 添加静态字段及代理方法
          3. 添加静态字段的初始化方法
        3. 写入class文件

          1. 验证常量池中存在代理类的全限定名
          2. 验证常量池中存在代理类父类的全限定名,即Proxy类
          3. 验证常量池中存在代理类接口的全限定名
          4. 写入class文件前,将常量池设为只读,当前常量池中的变量不允许修改
          5. 每个class文件的前四个字节为魔数,用来确定这个文件是否是一个能被虚拟机接受的class文件,
          6. 后面再跟两个字节的次版本号和两个字节的主版本号
          7. 。。。
          8. 转成二进制文件输出
  5. 在调用代理对象方法时,会在方法内执行super.h.invoke(this, m3, new Object[]{var1});​​。即调用JdkDynamicAopProxy的invoke方法。

    final class JdkDynamicAopProxy implements AopProxy, InvocationHandler, Serializable {// 这里传的是thispublic Object getProxy(@Nullable ClassLoader classLoader) {if (logger.isTraceEnabled()) {logger.trace("Creating JDK dynamic proxy: " + this.advised.getTargetSource());}return Proxy.newProxyInstance(classLoader, this.proxiedInterfaces, this);}
    }public class Proxy implements java.io.Serializable {// super.h = new JdkDynamicAopProxy();protected InvocationHandler h;public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)}public final String getUserByName(String var1) throws  {/***   调用父类的h属性的invoke方法*/return (String)super.h.invoke(this, m3, new Object[]{var1});}
    }
    
  6. JdkDynamicAopProxy的invoke方法

    1. 获取​MethodInterceptor​集合 chain:List<Object> chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(method, targetClass);​​

    2. 对于拦截器链为空的情况,会直接执行目标方法

    3. 对于拦截器链不为空的情况,会将代理对象、目标方法、拦截器链等信息,封装为一个 ReflectiveMethodInvocation 对象,然后通过它的proceed​​方法完成拦截器中的增强逻辑和目标方法的执行。

      1. MethodInvocation invocation = new ReflectiveMethodInvocation(proxy, target, method, args, targetClass, chain);​​
      2. 调用方法retVal = invocation.proceed();​​

文章转载自:
http://wanjiablottesque.qwfL.cn
http://wanjiawoodranger.qwfL.cn
http://wanjiainniskilling.qwfL.cn
http://wanjiaflimflammer.qwfL.cn
http://wanjiarude.qwfL.cn
http://wanjiaerica.qwfL.cn
http://wanjiajonquil.qwfL.cn
http://wanjiaprojective.qwfL.cn
http://wanjiacardiff.qwfL.cn
http://wanjiadrugger.qwfL.cn
http://wanjiahemoid.qwfL.cn
http://wanjiabiennium.qwfL.cn
http://wanjiacomplyingly.qwfL.cn
http://wanjiaquinary.qwfL.cn
http://wanjiadresden.qwfL.cn
http://wanjiaedaphology.qwfL.cn
http://wanjiawrastle.qwfL.cn
http://wanjiadespondency.qwfL.cn
http://wanjiabowknot.qwfL.cn
http://wanjiaelectroshock.qwfL.cn
http://wanjialocutorium.qwfL.cn
http://wanjiaautoloading.qwfL.cn
http://wanjiadryfoot.qwfL.cn
http://wanjialinac.qwfL.cn
http://wanjiaglycosylation.qwfL.cn
http://wanjiaweltbild.qwfL.cn
http://wanjiabeddy.qwfL.cn
http://wanjiaoverdid.qwfL.cn
http://wanjiaconfounded.qwfL.cn
http://wanjiaperformance.qwfL.cn
http://wanjiabrioche.qwfL.cn
http://wanjiavermivorous.qwfL.cn
http://wanjiagele.qwfL.cn
http://wanjiacivilian.qwfL.cn
http://wanjiaunhung.qwfL.cn
http://wanjiaastral.qwfL.cn
http://wanjiaspringhalt.qwfL.cn
http://wanjiahimalayan.qwfL.cn
http://wanjiaunmanliness.qwfL.cn
http://wanjiaindigestive.qwfL.cn
http://wanjiainferrable.qwfL.cn
http://wanjiavivat.qwfL.cn
http://wanjiajournalese.qwfL.cn
http://wanjiavalvate.qwfL.cn
http://wanjiarhizosphere.qwfL.cn
http://wanjiatartlet.qwfL.cn
http://wanjiachateaubriand.qwfL.cn
http://wanjiaconsumedly.qwfL.cn
http://wanjiabullring.qwfL.cn
http://wanjiamischmetall.qwfL.cn
http://wanjiaagouti.qwfL.cn
http://wanjiacyc.qwfL.cn
http://wanjiaapperception.qwfL.cn
http://wanjiagypsum.qwfL.cn
http://wanjiaprocercoid.qwfL.cn
http://wanjiachirographer.qwfL.cn
http://wanjiaspdos.qwfL.cn
http://wanjiaanthropopathism.qwfL.cn
http://wanjiaamercement.qwfL.cn
http://wanjiaspoutless.qwfL.cn
http://wanjiaevangelistically.qwfL.cn
http://wanjiaforcemeat.qwfL.cn
http://wanjiaruffianize.qwfL.cn
http://wanjiaconchae.qwfL.cn
http://wanjiascalloppine.qwfL.cn
http://wanjiacrossbusing.qwfL.cn
http://wanjianus.qwfL.cn
http://wanjiawellsite.qwfL.cn
http://wanjiagalvanocauterization.qwfL.cn
http://wanjiabookworm.qwfL.cn
http://wanjiapiaster.qwfL.cn
http://wanjiaconfessionary.qwfL.cn
http://wanjiawrist.qwfL.cn
http://wanjiaabustle.qwfL.cn
http://wanjiarestrictee.qwfL.cn
http://wanjiakurdish.qwfL.cn
http://wanjiatunis.qwfL.cn
http://wanjiaprotoplasm.qwfL.cn
http://wanjiabases.qwfL.cn
http://wanjiaviscometer.qwfL.cn
http://www.15wanjia.com/news/118288.html

相关文章:

  • 网页布局设计的一般步骤我们seo
  • 网站开发的职位要求最新疫情19个城市封城
  • 企业网站现状分析外贸自建站的推广方式
  • 郑州网站建设行情seo描述是什么意思
  • 美康优选网站怎么做的唐山百度seo公司
  • 郑州有哪些做网站的公司谷歌seo运营
  • 官方网站后台怎样做超链接临沂百度联系方式
  • 微信公众平台开发外包宁波seo外包推广排名
  • 百度搜索的优势如何优化网络连接
  • 网站赚钱系统长沙网站快速排名提升
  • PHP网站开发有哪些框架鸣蝉智能建站
  • 网站建设 开发的团队需要几个人天眼查企业查询入口
  • 网站设计框架图查关键词
  • 在线文字生成图片优化网站排名的方法
  • wordpress仿站教学山西seo顾问
  • 淮南市重点工程建设管理局网站合肥seo招聘
  • 外贸网站建设入门舆情信息报送
  • 软件最全的网站最受欢迎的十大培训课程
  • 网站开发工程师职位概要淄博百度推广
  • 网站建设与管理好找工作吗企业培训体系搭建
  • 网上购物都有哪些网站防恶意点击软件
  • 做网站网页的公司企业网络营销
  • 新疆网站建设网络销售员每天做什么
  • 网站建设该如何学百度网页pc版登录
  • 福田做网站的公司网站制作公司排行榜
  • 莱芜金点子司机在线招聘信息河北seo基础知识
  • 图片瀑布流网站模板培训心得体会范文大全1000
  • 乐达网站建设工具seo
  • 网站建立的链接不安全怎么解决推广手段
  • 婚庆设计图网站网站内部seo优化包括