带你阅读dubbo源码之通过SPI装载扩展(一)
来源:互联网 发布:广州cda数据分析培训 编辑:程序博客网 时间:2024/04/29 08:29
Dubbo(https://github.com/alibaba/dubbo)是阿里开源的一个分布式服务框架,以及SOA治理方案。其功能主要包括:
· 高性能NIO通讯及多协议集成,
· 服务动态寻址与路由,
· 软负载均衡与容错,
· 依赖分析与降级等。
篇章一:dubbo 装载Extension流程,以com.alibaba.dubbo.common.extension.ExtensionFactory为例
启动类:com.alibaba.dubbo.container.Main
首先会静态加载Container容器扩展通过@SPI注释标识
Container扩展加载目录
通过ExtensionLoader(Class<?> type)构造函数实例化调用getExtensionLoader方法进行扩展装载:
当class传入类型不是ExtensionFactory.class的时候,创建ExtensionLoader调用getAdaptiveExtension开始装载扩展。
加载过程:
加载目录:META-INF/dubbo/internal/
加载文件名:META-INF/dubbo/internal/com.alibaba.dubbo.common.extension.ExtensionFactory
通过文件找到要加载的扩展进行处理:
如果是@Adaptive则缓存该adaptiveClass,否则实力化扩展及缓存在本地
最终扩展装载完成!dubbo内置了很多扩展模块,了解了dubbo是怎么装载扩展的,你也可以为dubbo写自己的扩展了:) 。
方法:
1.保证扩展文件在以下三个目录:
META-INF/services/
META-INF/dubbo/
META-INF/dubbo/internal
2.目录里同时创建一个以服务接口命名的文件
比如:META-INF/dubbo/internal/com.alibaba.dubbo.common.extension.ExtensionFactory
3.文件里边就是实现该服务接口的具体实现类
比如:
adaptive=com.alibaba.dubbo.common.extension.factory.AdaptiveExtensionFactory
spi=com.alibaba.dubbo.common.extension.factory.SpiExtensionFactory
- 带你阅读dubbo源码之通过SPI装载扩展(一)
- 带你阅读dubbo源码之自定义标签(二)
- dubbo-spi扩展一
- dubbo源码之SPI注解
- Dubbo源码解析-Dubbo微内核实现(SPI扩展)
- Dubbo源码阅读体会(一)
- dubbo源码阅读笔记--动态扩展
- Dubbo源码阅读之 ExtensionLoader
- dubbo基于spi扩展
- dubbo-spi扩展二
- Dubbo源码分析 ---- 基于SPI的扩展实现机制
- Dubbo源码阅读之 客户端远程调用
- (未完成)Dubbo源码分析(七):Dubbo内核实现之基于SPI思想Dubbo内核实现
- 2.dubbo源码分析 之 内核SPI实现
- dubbo之SPI解析
- Dubbo源码 SPI实现ExtensionLoader
- DUBBO SPI部分源码浅析
- Dubbo源码分析(五):Dubbo内核实现之SPI简单介绍
- 解决修改httpd配置文件Options Indexes FollowSymLinks仍然无法禁止访问网站目录
- rabbitmq初探
- cordova打开文件的类型设置
- 从零开始构建一个spring boot + angular web应用(2)
- 测试相关概念
- 带你阅读dubbo源码之通过SPI装载扩展(一)
- nolock查询
- linux 下软件安装包的格式有哪些?
- lua中数字转成人民币大写形式
- 开涛博客分享
- spring boot实战(第十二篇)整合RabbitMQ
- 深入理解 Spring 事务原理
- AMQP协议(经典)
- 【CCF 火车购票 水】