张贴在 2022
12 全局视野来看Dubbo3的服务启动生命周期
Friday, August 12, 2022 在 Dubbo3 [v3.0.8] 源码解析
12 全局视野来看Dubbo3的服务启动生命周期 12.1 启动方法简介 在说启动方法之前先把视野拉回第一章《1-从一个服务提供者的Demo说起》我们的Demo代码,下面只贴一下核心代码: public class Application { public static void main(String[] args) throws Exception { startWithBootstrap(); } private static void startWithBootstrap() { //前 …
11-Dubbo启动器DubboBootstrap添加协议配置信息ProtocolConfig
Thursday, August 11, 2022 在 Dubbo3 [v3.0.8] 源码解析
11-Dubbo启动器DubboBootstrap添加协议配置信息ProtocolConfig 11.1 简介 先贴个代码用来参考: DubboBootstrap bootstrap = DubboBootstrap.getInstance(); bootstrap.application(new ApplicationConfig("dubbo-demo-api-provider")) .registry(new …
10-Dubbo启动器DubboBootstrap添加注册中心配置信息RegistryConfig
Wednesday, August 10, 2022 在 Dubbo3 [v3.0.8] 源码解析
10-Dubbo启动器DubboBootstrap添加注册中心配置信息RegistryConfig 10.1 简介 先贴个代码用来参考: DubboBootstrap bootstrap = DubboBootstrap.getInstance(); bootstrap.application(new ApplicationConfig("dubbo-demo-api-provider")) .registry(new …
9-Dubbo启动器DubboBootstrap添加应用程序的配置信息ApplicationConfig
Tuesday, August 09, 2022 在 Dubbo3 [v3.0.8] 源码解析
9-Dubbo启动器DubboBootstrap添加应用程序的配置信息ApplicationConfig 9.1 简介 先贴个代码用来参考: DubboBootstrap bootstrap = DubboBootstrap.getInstance(); bootstrap.application(new ApplicationConfig("dubbo-demo-api-provider")) .registry(new …
8-Dubbo启动器DubboBootstrap借助双重校验锁的单例模式进行对象的初始化
Monday, August 08, 2022 在 Dubbo3 [v3.0.8] 源码解析
8-Dubbo启动器DubboBootstrap借助双重校验锁的单例模式进行对象的初始化 8.1 启动器简介 在说启动器之前先把视野拉回第一章《1-从一个服务提供者的Demo说起》我们的Demo代码,下面只贴一下核心代码: public class Application { public static void main(String[] args) throws Exception { startWithBootstrap(); } private static void …
7-Dubbo的SPI扩展机制之自动激活扩展Activate源码解析
Sunday, August 07, 2022 在 Dubbo3 [v3.0.8] 源码解析
7-Dubbo的SPI扩展机制之自动激活扩展Activate源码解析 7.1 Activate扩展的说明 此注解对于使用给定条件自动激活某些扩展非常有用,例如:@Activate可用于在有多个实现时加载某些筛选器扩展。 group() 指定组条件。框架SPI定义了有效的组值。 value() 指定URL条件中的参数键。 SPI提供程序可以调用ExtensionLoader。getActivateExtension(URL、String、String)方法以查找具有给定条件的所有已激活扩展。 比如 …
06-Dubbo的SPI扩展机制之普通扩展对象的创建与Wrapper机制的源码解析
Saturday, August 06, 2022 在 Dubbo3 [v3.0.8] 源码解析
6 Dubbo的SPI扩展机制之普通扩展对象的创建与Wrapper机制的源码解析 6.1 普通扩展对象的加载与创建 这里我们要分析的是ExtensionLoader类型的getExtension(String name)方法, 有了前面自适应扩展的铺垫,这里就更容易来看了getExtension是根据扩展名字获取具体扩展的通用方法,我们来根据某个类型来获取扩展的时候就是走的这里,比如在这个博客开头的介绍: ApplicationModel中获取配置管理器对象 configManager = …
05-自适应扩展对象的创建getAdaptiveExtension方法
Friday, August 05, 2022 在 Dubbo3 [v3.0.8] 源码解析
5 自适应扩展对象的创建getAdaptiveExtension方法 自适应扩展又称为动态扩展,可以在运行时生成扩展对象 ExtensionLoader中的getAdaptiveExtension()方法,这个方法也是我们看到的第一个获取扩展对象的方法. ,这个方法可以帮助我们通过SPI机制从扩展文件中找到需要的扩展类型并创建它的对象, 自适应扩展:如果对设计模式比较了解的可能会联想到适配器模式,自适应扩展其实就是适配器模式的思路,自适应扩展有两种策略: 一种是我们自己实现自适应扩展:然后使 …
04-Dubbo的扩展机制
Thursday, August 04, 2022 在 Dubbo3 [v3.0.8] 源码解析
4-Dubbo的扩展机制 4.1 回顾我们前面使用到扩展场景 在上一章中我们初始化应用模型对象的时候,了解到有几个地方用到了扩展机制来创建对象,这一章我们会详细来讲一下这个扩展对象的加载过程,这里我们先来回顾下哪些地方用到了扩展机制: // 使用扩展机制获取TypeBuilder Set<TypeBuilder> tbs = model.getExtensionLoader(TypeBuilder.class).getSupportedExtensionInstances(); // …
03-框架,应用程序,模块领域模型Model对象的初始化
Wednesday, August 03, 2022 在 Dubbo3 [v3.0.8] 源码解析
3-框架,应用程序,模块领域模型Model对象的初始化 在上一章中我们详细看了服务配置ServiceConfig类型的初始化,不过我们跳过了AbstractMethodConfig的构造器中创建模块模型对象的过程,那这一章我们就来看下模块模型对象的初始化过程: public AbstractMethodConfig() { super(ApplicationModel.defaultModel().getDefaultModule()); } 那为什么会在Dubbo3的新版本中加入这个域模型呢, …