张贴在 2022

  • 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的新版本中加入这个域模型呢, …

    更多

  • 02-启动服务前服务配置ServiceConfig类型是如何初始化的?

    Tuesday, August 02, 2022 在 Dubbo3 [v3.0.8] 源码解析

    2-启动服务前服务配置ServiceConfig类型是如何初始化的? 2.1 示例源码回顾: 为了方便我们理解记忆,这里先来回顾下上一章我们说的示例代码,如下所示: public class Application { public static void main(String[] args) throws Exception { startWithBootstrap(); } private static void startWithBootstrap() { …

    更多

  • 01 从一个服务提供者的Demo说起

    Monday, August 01, 2022 在 Dubbo3 [v3.0.8] 源码解析

    1 从一个服务提供者的Demo说起 为了更方便了解原理,我们先来编写一个Demo,从例子中来看源码实现: 1.1 启动Zookeeper 为了Demo可以正常启动,需要我们先在本地启动一个Zookeeper如下图所示: 1.2 服务提供者 接下来给大家贴一下示例源码,这个源码来源于Dubbo源码目录的 dubbo-demo/dubbo-demo-api 目录下面的dubbo-demo-api-provider子项目,这里我做了删减,方便看核心代码: 首先我们定义一个服务接口如下所示: …

    更多