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

湖北响应式网站建设企业wordpress应用教程 pdf

湖北响应式网站建设企业,wordpress应用教程 pdf,为什么用dw做的网站打不开,阿里云做网站多少钱四、Dubbo扩展点加载机制 4.1 加载机制概述 Dubbo良好的扩展性与框架中针对不同场景使用合适设计模式、加载机制密不可分 Dubbo几乎所有功能组件都是基于扩展机制#xff08;SPI#xff09;实现的 Dubbo SPI 没有直接使用 Java SPI#xff0c;在它思想上进行改进#xff…四、Dubbo扩展点加载机制 4.1 加载机制概述 Dubbo良好的扩展性与框架中针对不同场景使用合适设计模式、加载机制密不可分 Dubbo几乎所有功能组件都是基于扩展机制SPI实现的 Dubbo SPI 没有直接使用 Java SPI在它思想上进行改进并兼容 Java SPI 4.1.1 Java SPI Java SPIService Provider Interface使用了策略模式一个接口多种实现具体实现由程序之外的配置掌控。具体步骤 定义一个接口及对应的方法编写该接口的一个实现类在 META-INF/services/目录下创建一个以接口全路径命名的文件如com.test.spi.PrintService文件内容为具体实现类的全路径名如果有多个则用分行符分隔在代码中通过java.util.ServiceLoader来加载具体的实现类 4.1.2 扩展点加载机制的改进 Java SPI加载失败可能会因为各种原因导致异常信息被“吞掉”导致开发人员问题追踪比较困难。Dubbo SPI在扩展加载失败的时候会先抛出真实异常并打印日志。扩展点在被动加载的时候即使有部分扩展加载失败也不会影响其他扩展点和整个框架的使用 Dubbo SPI自己实现了 IoC和AOP机制。一个扩展点可以通过setter方法直接注入其他扩展的方法 Dubbo 支持包装扩展类推荐把通用的抽象逻辑放到包装类中用于实现扩展点的AOP特性 4.1.3 扩展点的配置规范 Dubbo SPI 配置规范 4.1.4 扩展点的分类与缓存 Dubbo SPI 缓存 Class缓存Dubbo SPI获取扩展类时会先从缓存中读取。如果缓存中不存在则加载配置文件根据配置把Class缓存到内存中并不会直接全部初始化实例缓存基于性能考虑Dubbo框架中不仅缓存Class,也会缓存Class实例化后的对象。每次获取的时候会先从缓存中读取如果缓存中读不到则重新加载并缓存起来。这也是为什么Dubbo SPI相对Java SPI性能上有优势的原因因为Dubbo SPI缓存的Class并不会全部实例化而是按需实例化并缓存因此性能更好。 4.1.5 扩展点的特性 扩展类特性自动包装、自动加载、自适应和自动激活 自动包装ExtensionLoader在加载扩展时如果发现这个扩展类包含其他扩展点作为构造函数的参数则这个扩展类就会被认为是Wrapper类自动加载如果某个扩展类是另外一个扩展点类的成员属性并且拥有setter方法那么框架也会自动注入对应的扩展点实例自适应使用Adaptive注解可以动态地通过URL中的参数来确定要使用哪个具体的实现类。从而解决自动加载中的实例注入问题自动激活使用Activate注解可以标记对应的扩展点默认被激活启用 4.2 扩展点注解 4.2.1 扩展点注解SPI 标记这个接口是一个Dubbo SPI接口即是一个扩展点可以有多个不同的内置或用户定义的实现 Dubbo中很多地方通过getExtension (Class type, String name)来获取扩展点接口的具体实现此时会对传入的Class做校验判断是否是接口以及是否有SPI注解两者缺一不可 4.2.2 扩展点自适应注解Adaptive 在整个Dubbo框架中只有几个地方使用在类级别上如AdaptiveExtensionFactory和AdaptiveCompiler,其余都标注在方法上 方法级别注解可以通过参数动态获得实现类在第一次getExtension时会自动生成和编译一个动态的Adaptive类从而达到动态实现类的效果 4.2.3 扩展点自动激活注解Activate 有多个扩展点实现、需要根据不同条件被激活的场景中如Filter需要多个同时激活因为每个Filter实现的是不同的功能 4.3 ExtensionLoader 的工作原理 4.3.1 工作流程 ExtensionLoader 的逻辑入口可以分为 getExtension、getAdaptiveExtension、getActivateExtension三个分别是获取普通扩展类、获取自适应扩展类、获取自动激活的扩展类 4.4 扩展点动态编译的实现 4.4.1 总体结构 Dubbo中有三种代码编译器分别是JDK编译器、Javassist编译器和AdaptiveCompiler编译器 Compiler接口上含有一个SPI注解注解的默认值是SPI(”javassist”)即Javassist编译器将作为默认编译器 AdaptiveCompiler上面Adaptive注解说明AdaptiveCompiler会固定为默认实现 4.4.2 Javassist 动态代码编译 初始化Javassist,设置默认参数如设置当前的classpath 通过正则匹配出所有import的包并使用Javassist添加import 通过正则匹配出所有extends的包创建Class对象并使用Javassist添加extends 通过正则匹配出所有implements包并使用Javassist添加implements 通过正则匹配出类里面所有内容即得到中的内容再通过正则匹配出所有方法,并使用Javassist添加类方法 生成Class对象 4.4.3 JDK 动态代码编译 初始化一个JavaFileObject对象并把代码字符串作为参数传入构造方法 调用JavaCompiler.CompilationTask方法编译出具体的类 JavaFileManager负责管理类文件的输入/输出位置
http://www.hkea.cn/news/14419968/

相关文章:

  • 用手机可以做网站吗wordpress 去掉w
  • 华为商城网站设计分析小锋云主机
  • 企业网站模板公司园林景观设计公司纳税义务的发生时间的确定
  • 家居设计网站推荐建设大马路小学网站
  • 蓬莱网站建设哪家专业wordpress改模版
  • 网站开发公司经营范围奇客影院wordpress
  • 深圳恒诚信企业管理有限公司临沂seo代理商
  • 邢台公司做网站wordpress表单附件上传图片
  • 请问门户网站是什么意思电商设计年终总结
  • ps素材网站大全莱芜吧诚意带大家修车
  • wordpress view插件陕西seo推广
  • 公司网站怎么管理seo伪原创工具
  • 做餐饮系统网站建设国外网站流量查询
  • 枣庄手机网站制作德国网站的后缀名
  • 梁山城乡建设局网站找资源
  • 计算机网站开发项目怎么选择一个好的友情链接网站
  • 百度贴吧有没有做网站的人知识库wordpress主题
  • 美文网站源码郑州郑州网站建设河南做网站公司
  • 一个公司可以做两个网站么环保网站设计
  • 简述dw网站建设步骤品牌策划案例ppt
  • 手机网站跳转谁有做那事的网站
  • 《高性能网站建设指南》营销推广策略有哪些
  • 网站设计公司 国际网站建设外包排名
  • 一个虚拟主机多个网站wordpress小红心插件
  • 房装修网百度上做优化一年多少钱
  • 网站制作怎样做wordpress商业网站
  • 班级网站建设毕业设计开题报告官方网站建设最重要的是什么
  • 深圳网站建设设计公司网站开发费属于无形资产那部分
  • 专业的佛山网站建设价格网页设计有哪些内容
  • 网站怎么做看起来好看上海牛人岛企业服务有限公司