精尽 Dubbo 源码分析 —— 属性配置

本文详细分析了Dubbo的属性配置,包括默认的dubbo.properties加载、配置的重写与优先级规则。在源码解析部分,重点探讨了AbstractConfig类如何通过反射读取配置项,并介绍了配置项的加载顺序,如JVM参数、XML配置和Properties文件。此外,还举例说明了配置类的方法和属性名映射关系。
摘要由CSDN通过智能技术生成

1. 概述

属性配置

如果你的应用足够简单,例如,不需要多注册中心或多协议,并且需要在spring容器中共享配置,那么,我们可以直接使用 dubbo.properties作为默认配置。

Dubbo可以自动加载classpath根目录下的dubbo.properties,但是你同样可以使用JVM参数来指定路径:-Ddubbo.properties.file=xxx.properties。

重写与优先级

在这里插入图片描述
优先级从高到低:

JVM -D参数,当你部署或者启动应用时,它可以轻易地重写配置,比如,改变dubbo协议端口;
XML, XML中的当前配置会重写dubbo.properties中的;
Properties,默认配置,仅仅作用于以上两者没有配置时。
1:如果在classpath下有超过一个dubbo.properties文件,比如,两个jar包都各自包含了dubbo.properties,dubbo将随机选择一个加载,并且打印错误日志。

2:如果 id没有在protocol中配置,将使用name作为默认属性。

FROM Dubbo 用户指南 —— 属性配置

2. 源码解析

AbstractConfig

在 AbstractConfig 中,提供了 #appendProperties(config) 方法,读取启动参数变量和 properties 配置到配置对象。

 protected static void appendProperties(AbstractConfig config) {
   
     if (config == null) {
   
          return;
      }
      String prefix = "dubbo." + getTagName(config.getClass()) + ".";
      Method[] methods = config.getClass().getMethods();
      for (Method method : methods) {
   
         try {
   
              String name = method.getName();
             if (name.length() > 3 && name.startsWith("set") && Modifier.isPublic(method.getModifiers()) // 方法是 public 的 setting 方法。
                     && method.getParameterTypes().length == 1 && isPrimitive(met
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值