Dubbo的配置其实已经在[官网](http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html
)说的很详细了。
分为以下三类:
1.Xml配置
2.API配置
3.注解配置
配置之间的关系
配置之间的关系.png不同粒度配置的覆盖关系
- 方法级优先,接口级次之,全局配置再次之。
- 如果级别一样,则消费方优先,提供方次之。
配置覆盖关系的优先级
1.JVM System Properties,-D参数
2.Externalized Configuration,外部化配置
3.ServiceConfig、ReferenceConfig等编程接口采集的配置
4.本地配置文件dubbo.properties
image.png
Dubbo的Config的源码结构图
image.pngAbstractInterfaceConfig
AbstractInterfaceConfig是抽象类,ConsumerConfig和ProviderConfig都实现了它。先看看这里的源码
checkRegisty()源码
protected void checkRegistry() {
// 当 RegistryConfig 对象数组为空时,若有 `dubbo.registry.address` 配置,进行创建。
// for backward compatibility 向后兼容
if (registries == null || registries.isEmpty()) {
String address = ConfigUtils.getProperty("dubbo.registry.address");
if (address != null && address.length() > 0) {
registries = new ArrayList<RegistryConfig>();
String[] as = address.split("\\s*[|]+\\s*");
for (String a : as) {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(a);
registries.add(registryConfig);
}
}
}
if ((registries == null || registries.isEmpty())) {
throw new IllegalStateException((getClass().getSimpleName().startsWith("Reference")
? "No such any registry to refer service in consumer "
: "No such any registry to export service in provider ")
+ NetUtils.getLocalHost()
+ " use dubbo version "
+ Version.getVersion()
+ ", Please add <dubbo:registry address=\"...\" /> to your spring config. If you want unregister, please set <dubbo:service registry=\"N/A\" />");
}
// 读取环境变量和 properties 配置到 RegistryConfig 对象数组。
for (RegistryConfig registryConfig : registries) {
appendProperties(registryConfig);
}
}
网友评论