Dubbo源码解读——Dubbo如何启停服务
1、Dubbo配置解析
Dubbo 提供的配置方式:Xml、注解、属性文件(ymal,properties)
解析主要生成对应的Bean定义并注册到Spring上下文中
相关配置解析在dubbo-config模块中
其解析入口为:DubboNamespaceHandler
2、源码解读:
xml配置方式解析:其入口是DubboNamespaceHandler,DubboBeanDefinitionParser中parse解析步骤为:
初始化RootBeanDefinition
获取BeanId
将获取到的Bean注册到Spring
将xml中配置的信息放到beandefinition的PropertyValues中
注解处理机制:
EnableDubbo激活注解
如果使用了配置文件,则框架按需生成对应的Bean。
将所有使用Dubbo注解(@Service)的class提升为Bean。
使用注解(@Reference)的方法或字段注入代理对象。
解析注解属性:DubboConfigConfigurationRegistrar 和 DubboComponentScanRegistrar
服务注解扫描和注册:ServiceAnnotationBeanPostProcessor
消费注解注入:ReferenceAnnotationBeanPostProcessor
服务暴露源码入口:ServiceConfig 中doExport
protected synchronized void doExport() {
if (unexported) {
throw new IllegalStateException("The service " + interfaceClass.getName() + " has already unexported!");
}
if (exported) {
return;
}
exported = true;
if (StringUtils.isEmpty(path)) {
path = interfaceName;
}
doExportUrls();
}
消费服务引用的入口:ReferenceBean中的
@Override
public Object getObject() {
return get();
}
3、记录的知识点:
Dubbo 利用了Spring 配置文件扩展出自定义的解析方式。
Dubbo支持多注册中心同时写,支付相同服务暴露多个协议。
Dubbo支持多注册中心同时消费。
Dubbo可以绕过注册中心直接向指定服务发起RPC调用(使用场景-压测)。
且读且珍惜~
以上是 Dubbo源码解读——Dubbo如何启停服务 的全部内容, 来源链接: utcz.com/z/515130.html