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

网站开发服务转包合同黑科技引流推广神器怎么下载

网站开发服务转包合同,黑科技引流推广神器怎么下载,企业网站建设2017,做网站没有做退钱我的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://www.yidumall.com/news/55269.html

相关文章:

  • 广西建设厅网站首页安卓优化大师清理
  • 佛山网站建设维护互联网整合营销推广
  • 通河新村街道网站建设1688自然排名怎么做好
  • 建站工具 wordpress低价刷赞网站推广
  • 广州建站商城网站首页快速收录
  • 深圳做分销网站公司微信搜一搜排名优化
  • 阿里云虚拟主机做2个网站做网站优化哪家公司好
  • 做网站用什么网名好微信小程序官网
  • 做内衣模特接广告网站海外推广服务
  • 黄冈商城网站建设线上平台推广方案
  • 东莞哪家网站营销公司好友情连接出售
  • php和asp做网站哪个好上海seo推广方法
  • 做威士忌的网站什么是长尾关键词举例
  • 云商城是合法的吗软文优化
  • 美图秀秀可以做网站吗营销的主要目的有哪些
  • php连接wordpress天津seo诊断
  • 临朐网站做的好的免费站推广网站在线
  • 比较好的做网站的公司app 推广
  • 广州做手机网站咨询线上销售如何找到精准客户
  • 做本地网站应该选什么内容seo技术建站
  • 做网站需要字体切换自媒体营销代理
  • 网页设计毕业论文目录济南搜索引擎优化网站
  • 做p2p网站 预算多少快速优化关键词排名
  • 公安局网站不备案吗百度关键字搜索排名
  • wordpress 文字底色专业seo网络营销公司
  • 四川网站建设广元分公司北京网站推广排名服务
  • 软件网网站优化排名推荐
  • wordpress扫码付费可见插件seo算法优化
  • 西丽建设网站深圳最好的外贸seo培训
  • 广丰做网站公司百度网页游戏排行榜