Dubbo 版本:3.1.2
自定义标签解析
在 DubboNamespaceHandler 中会添加 DubboDeployApplicationListener,其继承了 ApplicationListener<ApplicationContextEvent>
关于ApplicationListener,可参考:Spring 事件基本使用

服务暴露
注意,在 ServiceConfig # doExportUrls 内部,有
List<URL> registryURLs = ConfigValidationUtils.loadRegistries(this, true);
会在 registry 的基础上再生成一个新的 注册地址,其 protocol 为 service-discovery-registry
所以,向外暴露服务的时候,会执行 2 次

Wrapper 包装原理
在 getExtension 时,会加载 wrapper:存在一个只有一个参数的构造函数,且其类型为 type
可将 type 理解为:
ExtensionLoader.getExtensionLoader(Class type) 时传入的参数

第一个 for 循环

第一个 for 循环的启动服务
为了 return new NettyPortUnificationServer(url, handler) 而经过了一些努力
在 new 的过程中,会执行到 NettyPortUnificationServer类中的 doOpen() 方法,用于启动 netty

第二个 for 循环
第一个 for 循环的注册是:ServiceDiscoveryRegistry
第二个 for 循环的注册是:ZookeeperRegistry

第二个 for 循环的启动服务
因为第一个 for 循环中已经启动服务了,所以这里直接返回就行




















