code: public synchronized Map<String, Object> getConfigValueCache(boolean rebuild) {
          if (configValueCache != null && !rebuild) {
              return configValueCache;
          }
          Map<String, Object> context = new HashMap<String, Object>(32);
          Map<String, String> providerParams = getParameters();
          if (providerParams != null) {
              context.putAll(providerParams); // 复制接口的自定义参数
          }
          Map<String, MethodConfig> methodConfigs = getMethods();
          if (CommonUtils.isNotEmpty(methodConfigs)) {
              for (MethodConfig methodConfig : methodConfigs.values()) {
                  String prefix = RpcConstants.HIDE_KEY_PREFIX + methodConfig.getName() + RpcConstants.HIDE_KEY_PREFIX;
                  Map<String, String> methodparam = methodConfig.getParameters();
                  if (methodparam != null) { // 复制方法级自定义参数
                      for (Map.Entry<String, String> entry : methodparam.entrySet()) {
                          context.put(prefix + entry.getKey(), entry.getValue());
                      }
                  }
                  // 复制方法级参数属性
                  BeanUtils.copyPropertiesToMap(methodConfig, prefix, context);
              }
          }
          // 复制接口级参数属性
          BeanUtils.copyPropertiesToMap(this, StringUtils.EMPTY, context);
          configValueCache = Collections.unmodifiableMap(context);
          return configValueCache;
      }
docs: 接口属性和方法属性加载配置到缓存
  
  @param rebuild 是否重建
  @return Map<String Object> unmodifiableMap