This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/dev-metadata by this push:
     new 275635e  unify the config key format, sth like: 
dubbo.registries.id.address=xxx dubbo.registry.address=xxx 
dubbo.configCenters.apollo.address=xxx dubbo.configCenter.address=xxx
275635e is described below

commit 275635e5b7f97e5c2130b18b81197907b5f027af
Author: ken.lj <ken.lj...@gmail.com>
AuthorDate: Thu Dec 20 18:12:44 2018 +0800

    unify the config key format, sth like:
    dubbo.registries.id.address=xxx
    dubbo.registry.address=xxx
    dubbo.configCenters.apollo.address=xxx
    dubbo.configCenter.address=xxx
---
 .../java/org/apache/dubbo/common/Constants.java    |  19 ++--
 .../apache/dubbo/common/config/Environment.java    |   2 +-
 .../org/apache/dubbo/config/AbstractConfig.java    |  13 ++-
 .../dubbo/config/AbstractInterfaceConfig.java      |   2 +-
 .../apache/dubbo/config/ConfigCenterConfig.java    | 108 ++++++++++-----------
 .../org/apache/dubbo/config/ProtocolConfig.java    |   4 +-
 .../org/apache/dubbo/config/RegistryConfig.java    |   7 ++
 .../dubbo/config/spring/ConfigCenterBean.java      |   6 +-
 .../annotation/DubboConfigConfiguration.java       |   3 +-
 .../spring/schema/DubboBeanDefinitionParser.java   |   9 +-
 .../src/main/resources/META-INF/compat/dubbo.xsd   |  25 +++--
 .../src/main/resources/META-INF/dubbo.xsd          |  23 +++--
 .../configcenter/AbstractDynamicConfiguration.java |   5 +-
 .../support/apollo/ApolloDynamicConfiguration.java |   4 +-
 .../zookeeper/ZookeeperDynamicConfiguration.java   |   2 +-
 .../org/apache/dubbo/rpc/filter/ContextFilter.java |   1 -
 16 files changed, 123 insertions(+), 110 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
index 8ec7566..ef3f50c 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
@@ -58,17 +58,14 @@ public class Constants {
 
     public static final String ROUTERS_SUFFIX = ".routers";
 
-    public static final String DEFAULT_CONFIG_PROTOCOL = "nop";
-    public static final String CONFIG_ADDRESS_KEY = "config.address";
-    public static final String CONFIG_ENV_KEY = "config.env";
     public static final String CONFIG_CLUSTER_KEY = "config.cluster";
     public static final String CONFIG_NAMESPACE_KEY = "config.namespace";
     public static final String CONFIG_GROUP_KEY = "config.group";
     public static final String CONFIG_CHECK_KEY = "config.check";
-    public static final String CONFIG_CONFIGFILE_KEY = "config.configfile";
-    public static final String CONFIG_ENABLE_KEY = "config.enable";
+    public static final String CONFIG_CONFIGFILE_KEY = "config.configFile";
+    public static final String CONFIG_ENABLE_KEY = "config.highestPriority";
     public static final String CONFIG_TIMEOUT_KEY = "config.timeout";
-    public static final String CONFIG_APPNAME_KEY = "config.appname";
+    public static final String CONFIG_APPNAME_KEY = "config.appName";
 
     public static final String DEFAULT_CATEGORY = PROVIDERS_CATEGORY;
 
@@ -473,23 +470,23 @@ public class Constants {
      * simple the registry for provider.
      * @since 2.7.0
      */
-    public static final String SIMPLE_PROVIDER_CONFIG_KEY = 
"simple-provider-config";
+    public static final String SIMPLE_PROVIDER_CONFIG_KEY = 
"simpleProviderConfig";
     /**
      * simple the registry for consumer.
      * @since 2.7.0
      */
-    public static final String SIMPLE_CONSUMER_CONFIG_KEY = 
"simple-consumer-config";
+    public static final String SIMPLE_CONSUMER_CONFIG_KEY = 
"simpleConsumerConfig";
     /**
      * After simplify the registry, should add some paramter individually for 
provider.
      * @since 2.7.0
      */
-    public static final String EXTRA_PROVIDER_CONFIG_KEYS_KEY = 
"extra-provider-keys";
+    public static final String EXTRA_PROVIDER_CONFIG_KEYS_KEY = 
"extraProviderKeys";
     /**
      * After simplify the registry, should add some paramter individually for 
consumer.
      *
      * @since 2.7.0
      */
-    public static final String EXTRA_CONSUMER_CONFIG_KEYS_KEY = 
"extra-consumer-keys";
+    public static final String EXTRA_CONSUMER_CONFIG_KEYS_KEY = 
"extraConsumerKeys";
 
     /**
      * To decide whether to exclude unavailable invoker from the cluster
@@ -748,6 +745,8 @@ public class Constants {
 
     public static final String REGISTRIES_SUFFIX = "dubbo.registries.";
 
+    public static final String CONFIGCENTERS_SUFFIX = "dubbo.configCenters.";
+
     public static final String[] DEFAULT_REGISTER_PROVIDER_KEYS = 
{APPLICATION_KEY, CODEC_KEY, EXCHANGER_KEY, SERIALIZATION_KEY, CLUSTER_KEY, 
CONNECTIONS_KEY, DEPRECATED_KEY,
             GROUP_KEY, LOADBALANCE_KEY, MOCK_KEY, PATH_KEY, TIMEOUT_KEY, 
TOKEN_KEY, VERSION_KEY, WARMUP_KEY, WEIGHT_KEY, TIMESTAMP_KEY, 
DUBBO_VERSION_KEY, SPECIFICATION_VERSION_KEY};
 
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
index fe4c03d..74c9d30 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
@@ -129,10 +129,10 @@ public class Environment {
         InmemoryConfiguration appConfig = this.getAppConfig(prefix, id);
         // Config center has the highest priority
         if (!configCenterFirst) {
+            
compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, id));
             if (appConfig != null) {
                 compositeConfiguration.addConfiguration(appConfig);
             }
-            
compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, id));
             
compositeConfiguration.addConfiguration(this.getAppExternalConfig(prefix, id));
             
compositeConfiguration.addConfiguration(this.getExternalConfig(prefix, id));
             
compositeConfiguration.addConfiguration(this.getPropertiesConfig(prefix, id));
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
index 9ca9204..502bfa8 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
@@ -103,8 +103,7 @@ public abstract class AbstractConfig implements 
Serializable {
                 break;
             }
         }
-        tag = tag.toLowerCase();
-        return tag;
+        return tag.substring(0, 1).toLowerCase() + tag.substring(1);
     }
 
     protected static void appendParameters(Map<String, String> parameters, 
Object config) {
@@ -365,14 +364,14 @@ public abstract class AbstractConfig implements 
Serializable {
         Method getter = null;
         try {
             getter = clazz.getMethod("get" + propertyName);
+            propertyName = propertyName.substring(3, 4).toLowerCase() + 
propertyName.substring(4);
         } catch (NoSuchMethodException e) {
             getter = clazz.getMethod("is" + propertyName);
+            propertyName = propertyName.substring(2, 3).toLowerCase() + 
propertyName.substring(3);
         }
         Parameter parameter = getter.getAnnotation(Parameter.class);
         if (parameter != null && StringUtils.isNotEmpty(parameter.key()) && 
parameter.useKeyAsProperty()) {
             propertyName = parameter.key();
-        } else {
-            propertyName = propertyName.toLowerCase();
         }
         return propertyName;
     }
@@ -396,6 +395,12 @@ public abstract class AbstractConfig implements 
Serializable {
         this.id = id;
     }
 
+    public void updateIdIfAbsent(String value) {
+        if (StringUtils.isNotEmpty(value) && StringUtils.isEmpty(id)) {
+            this.id = value;
+        }
+    }
+
     protected void appendAnnotation(Class<?> annotationClass, Object 
annotation) {
         Method[] methods = annotationClass.getMethods();
         for (Method method : methods) {
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 8bef3bf..c8e2dce 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -450,7 +450,7 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
                 ConfigCenterConfig configCenterConfig = new 
ConfigCenterConfig();
                 configCenterConfig.setProtocol(rc.getProtocol());
                 configCenterConfig.setAddress(rc.getAddress());
-                configCenterConfig.setEnable(false);
+                configCenterConfig.setHighestPriority(false);
                 configCenterConfig.init();
                 return null;
             });
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index 7aee0ba..b4043e7 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@ -41,19 +41,18 @@ public class ConfigCenterConfig extends AbstractConfig {
 
     private String protocol;
     private String address;
-    private String env;
     private String cluster;
     private String namespace = "dubbo";
     private String group = "dubbo";
     private String username;
     private String password;
     private Long timeout = 3000L;
-    private Boolean enable = true;
+    private Boolean highestPriority = true;
     private Boolean check = true;
 
-    private String appname;
-    private String configfile = "dubbo.properties";
-    private String localconfigfile;
+    private String appName;
+    private String configFile = "dubbo.properties";
+    private String appConfigFile;
 
     private ApplicationConfig application;
     private RegistryConfig registry;
@@ -69,8 +68,14 @@ public class ConfigCenterConfig extends AbstractConfig {
             return;
         }
 
-        // give jvm properties the chance to override local configs, e.g., 
-Ddubbo.configcenter.config.priority
+        // give jvm properties the chance to override local configs, e.g., 
-Ddubbo.configcenter.highestPriority
         refresh();
+        if (StringUtils.isNotEmpty(getId())) {
+            // read 'dubbo.configCenters.zookeeper.'
+            setPrefix(Constants.CONFIGCENTERS_SUFFIX);
+            refresh();
+        }
+
         // try to use registryConfig as the default configcenter, only applies 
to zookeeper.
         if (!isValid() && registry != null && registry.isZookeeperProtocol()) {
             setAddress(registry.getAddress());
@@ -80,19 +85,18 @@ public class ConfigCenterConfig extends AbstractConfig {
 
         if (isValid()) {
             DynamicConfiguration dynamicConfiguration = 
startDynamicConfiguration(toConfigUrl());
-            String configContent = dynamicConfiguration.getConfig(configfile, 
group);
+            String configContent = dynamicConfiguration.getConfig(configFile, 
group);
 
             String appGroup = getApplicationName();
             String appConfigContent = null;
             if (StringUtils.isNotEmpty(appGroup)) {
                 appConfigContent = dynamicConfiguration.getConfig
-                        (
-                                StringUtils.isNotEmpty(localconfigfile) ? 
localconfigfile : configfile,
-                                appGroup
+                        (StringUtils.isNotEmpty(appConfigFile) ? appConfigFile 
: configFile,
+                         appGroup
                         );
             }
             try {
-                Environment.getInstance().setConfigCenterFirst(enable);
+                
Environment.getInstance().setConfigCenterFirst(highestPriority);
                 
Environment.getInstance().updateExternalConfigurationMap(parseProperties(configContent));
                 
Environment.getInstance().updateAppExternalConfigurationMap(parseProperties(appConfigContent));
             } catch (IOException e) {
@@ -110,7 +114,7 @@ public class ConfigCenterConfig extends AbstractConfig {
 
     private URL toConfigUrl() {
         Map<String, String> map = this.getMetaData();
-        if (StringUtils.isNotEmpty(env) && StringUtils.isEmpty(address)) {
+        if (StringUtils.isEmpty(address)) {
             address = Constants.ANYHOST_VALUE;
         }
         map.put(Constants.PATH_KEY, ConfigCenterConfig.class.getSimpleName());
@@ -129,7 +133,7 @@ public class ConfigCenterConfig extends AbstractConfig {
             }
             return application.getName();
         }
-        return appname;
+        return appName;
     }
 
     protected Map<String, String> parseProperties(String content) throws 
IOException {
@@ -162,6 +166,7 @@ public class ConfigCenterConfig extends AbstractConfig {
 
     public void setProtocol(String protocol) {
         this.protocol = protocol;
+        this.updateIdIfAbsent(protocol);
     }
 
     @Parameter(excluded = true)
@@ -171,18 +176,15 @@ public class ConfigCenterConfig extends AbstractConfig {
 
     public void setAddress(String address) {
         this.address = address;
+        if (address != null) {
+            int i = address.indexOf("://");
+            if (i > 0) {
+                this.updateIdIfAbsent(address.substring(0, i));
+            }
+        }
     }
 
-    @Parameter(key = Constants.CONFIG_ENV_KEY)
-    public String getEnv() {
-        return env;
-    }
-
-    public void setEnv(String env) {
-        this.env = env;
-    }
-
-    @Parameter(key = Constants.CONFIG_CLUSTER_KEY)
+    @Parameter(key = Constants.CONFIG_CLUSTER_KEY, useKeyAsProperty = false)
     public String getCluster() {
         return cluster;
     }
@@ -191,7 +193,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.cluster = cluster;
     }
 
-    @Parameter(key = Constants.CONFIG_NAMESPACE_KEY)
+    @Parameter(key = Constants.CONFIG_NAMESPACE_KEY, useKeyAsProperty = false)
     public String getNamespace() {
         return namespace;
     }
@@ -200,7 +202,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.namespace = namespace;
     }
 
-    @Parameter(key = Constants.CONFIG_GROUP_KEY)
+    @Parameter(key = Constants.CONFIG_GROUP_KEY, useKeyAsProperty = false)
     public String getGroup() {
         return group;
     }
@@ -209,7 +211,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.group = group;
     }
 
-    @Parameter(key = Constants.CONFIG_CHECK_KEY)
+    @Parameter(key = Constants.CONFIG_CHECK_KEY, useKeyAsProperty = false)
     public Boolean isCheck() {
         return check;
     }
@@ -218,13 +220,13 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.check = check;
     }
 
-    @Parameter(key = Constants.CONFIG_ENABLE_KEY)
-    public Boolean getEnable() {
-        return enable;
+    @Parameter(key = Constants.CONFIG_ENABLE_KEY, useKeyAsProperty = false)
+    public Boolean getHighestPriority() {
+        return highestPriority;
     }
 
-    public void setEnable(Boolean enable) {
-        this.enable = enable;
+    public void setHighestPriority(Boolean highestPriority) {
+        this.highestPriority = highestPriority;
     }
 
     public String getUsername() {
@@ -243,7 +245,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.password = password;
     }
 
-    @Parameter(key = Constants.CONFIG_TIMEOUT_KEY)
+    @Parameter(key = Constants.CONFIG_TIMEOUT_KEY, useKeyAsProperty = false)
     public Long getTimeout() {
         return timeout;
     }
@@ -252,31 +254,31 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.timeout = timeout;
     }
 
-    @Parameter(key = Constants.CONFIG_CONFIGFILE_KEY)
-    public String getConfigfile() {
-        return configfile;
+    @Parameter(key = Constants.CONFIG_CONFIGFILE_KEY, useKeyAsProperty = false)
+    public String getConfigFile() {
+        return configFile;
     }
 
-    public void setConfigfile(String configfile) {
-        this.configfile = configfile;
+    public void setConfigFile(String configFile) {
+        this.configFile = configFile;
     }
 
     @Parameter(excluded = true)
-    public String getLocalconfigfile() {
-        return localconfigfile;
+    public String getAppConfigFile() {
+        return appConfigFile;
     }
 
-    public void setLocalconfigfile(String localconfigfile) {
-        this.localconfigfile = localconfigfile;
+    public void setAppConfigFile(String appConfigFile) {
+        this.appConfigFile = appConfigFile;
     }
 
-    @Parameter(key = Constants.CONFIG_APPNAME_KEY)
-    public String getAppname() {
-        return appname;
+    @Parameter(key = Constants.CONFIG_APPNAME_KEY, useKeyAsProperty = false)
+    public String getAppName() {
+        return appName;
     }
 
-    public void setAppname(String appname) {
-        this.appname = appname;
+    public void setAppName(String appName) {
+        this.appName = appName;
     }
 
     public Map<String, String> getParameters() {
@@ -305,7 +307,7 @@ public class ConfigCenterConfig extends AbstractConfig {
     }
 
     private void checkConfigCenter() {
-        if ((StringUtils.isEmpty(env) && StringUtils.isEmpty(address))
+        if (StringUtils.isEmpty(address)
                 || (StringUtils.isEmpty(protocol) && 
(StringUtils.isEmpty(address) || !address.contains("://")))) {
             throw new IllegalStateException("You must specify the right 
parameter for configcenter.");
         }
@@ -314,16 +316,10 @@ public class ConfigCenterConfig extends AbstractConfig {
     @Override
     @Parameter(excluded = true)
     public boolean isValid() {
-        if (StringUtils.isEmpty(address) && StringUtils.isEmpty(env)) {
-            return false;
-        }
-        if (StringUtils.isNotEmpty(address)) {
-            if (!address.contains("://") && StringUtils.isEmpty(protocol)) {
-                return false;
-            }
-        } else if (StringUtils.isNotEmpty(env) && 
StringUtils.isEmpty(protocol)) {
+        if (StringUtils.isEmpty(address)) {
             return false;
         }
-        return true;
+
+        return address.contains("://") || StringUtils.isNotEmpty(protocol);
     }
 }
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
index fe986b3..7313f59 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
@@ -157,9 +157,7 @@ public class ProtocolConfig extends AbstractConfig {
     public void setName(String name) {
         checkName("name", name);
         this.name = name;
-        if (id == null || id.length() == 0) {
-            id = name;
-        }
+        this.updateIdIfAbsent(name);
     }
 
     @Parameter(excluded = true)
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java
index 347229c..7f15e4c 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/RegistryConfig.java
@@ -122,6 +122,7 @@ public class RegistryConfig extends AbstractConfig {
     public void setProtocol(String protocol) {
         checkName("protocol", protocol);
         this.protocol = protocol;
+        this.updateIdIfAbsent(protocol);
     }
 
     @Parameter(excluded = true)
@@ -131,6 +132,12 @@ public class RegistryConfig extends AbstractConfig {
 
     public void setAddress(String address) {
         this.address = address;
+        if (address != null) {
+            int i = address.indexOf("://");
+            if (i > 0) {
+                this.updateIdIfAbsent(address.substring(0, i));
+            }
+        }
     }
 
     public Integer getPort() {
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
index a0ddd87..1762d8f 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -41,7 +41,7 @@ import java.util.Map;
 /**
  * Since 2.7.0+, export and refer will only be executed when Spring is fully 
initialized, and each Config bean will get refreshed on the start of the export 
and refer process.
  * So it's ok for this bean not to be the first Dubbo Config bean being 
initialized.
- *
+ * <p>
  * If use ConfigCenterConfig directly, you should make sure 
ConfigCenterConfig.init() is called before actually export/refer any Dubbo 
service.
  */
 public class ConfigCenterBean extends ConfigCenterConfig implements 
InitializingBean, ApplicationContextAware, DisposableBean, EnvironmentAware {
@@ -107,8 +107,8 @@ public class ConfigCenterBean extends ConfigCenterConfig 
implements Initializing
     @Override
     public void setEnvironment(Environment environment) {
         if (fromSpring) {
-            Map<String, String> externalProperties = 
getConfigurations(getConfigfile(), environment);
-            Map<String, String> appExternalProperties = 
getConfigurations(StringUtils.isNotEmpty(getLocalconfigfile()) ? 
getLocalconfigfile() : ("application." + getConfigfile()), environment);
+            Map<String, String> externalProperties = 
getConfigurations(getConfigFile(), environment);
+            Map<String, String> appExternalProperties = 
getConfigurations(StringUtils.isNotEmpty(getAppConfigFile()) ? 
getAppConfigFile() : (StringUtils.isEmpty(getAppName()) ? ("application." + 
getConfigFile()) : (getAppName() + "." + getConfigFile())), environment);
             
org.apache.dubbo.common.config.Environment.getInstance().setExternalConfigMap(externalProperties);
             
org.apache.dubbo.common.config.Environment.getInstance().setAppExternalConfigMap(appExternalProperties);
             this.init();
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java
index cd5ddce..4b74828 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java
@@ -57,8 +57,7 @@ public class DubboConfigConfiguration {
             @EnableDubboConfigBinding(prefix = "dubbo.registry", type = 
RegistryConfig.class),
             @EnableDubboConfigBinding(prefix = "dubbo.protocol", type = 
ProtocolConfig.class),
             @EnableDubboConfigBinding(prefix = "dubbo.monitor", type = 
MonitorConfig.class),
-            @EnableDubboConfigBinding(prefix = "dubbo.provider", type = 
ProviderConfig.class),
-            @EnableDubboConfigBinding(prefix = "dubbo.consumer", type = 
ConsumerConfig.class), @EnableDubboConfigBinding(prefix = 
"dubbo.config-center", type = ConfigCenterBean.class),
+            @EnableDubboConfigBinding(prefix = "dubbo.provider", type = 
ProviderConfig.class), @EnableDubboConfigBinding(prefix = "dubbo.consumer", 
type = ConsumerConfig.class), @EnableDubboConfigBinding(prefix = 
"dubbo.configCenter", type = ConfigCenterBean.class),
             @EnableDubboConfigBinding(prefix = "dubbo.registrydata", type = 
RegistryDataConfig.class),
             @EnableDubboConfigBinding(prefix = "dubbo.metadatareport", type = 
MetadataReportConfig.class)
     })
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
index 58e92b0..bbb1017 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java
@@ -133,7 +133,8 @@ public class DubboBeanDefinitionParser implements 
BeanDefinitionParser {
                     && Modifier.isPublic(setter.getModifiers())
                     && setter.getParameterTypes().length == 1) {
                 Class<?> type = setter.getParameterTypes()[0];
-                String property = 
StringUtils.camelToSplitName(name.substring(3, 4).toLowerCase() + 
name.substring(4), "-");
+                String beanProperty = name.substring(3, 4).toLowerCase() + 
name.substring(4);
+                String property = StringUtils.camelToSplitName(beanProperty, 
"-");
                 props.add(property);
                 Method getter = null;
                 try {
@@ -163,9 +164,9 @@ public class DubboBeanDefinitionParser implements 
BeanDefinitionParser {
                             if ("registry".equals(property) && 
RegistryConfig.NO_AVAILABLE.equalsIgnoreCase(value)) {
                                 RegistryConfig registryConfig = new 
RegistryConfig();
                                 
registryConfig.setAddress(RegistryConfig.NO_AVAILABLE);
-                                
beanDefinition.getPropertyValues().addPropertyValue(property, registryConfig);
+                                
beanDefinition.getPropertyValues().addPropertyValue(beanProperty, 
registryConfig);
                             } else if ("provider".equals(property) || 
"protocol".equals(property) || "registry".equals(property)) {
-                                
beanDefinition.getPropertyValues().addPropertyValue(property, value);
+                                
beanDefinition.getPropertyValues().addPropertyValue(beanProperty, value);
                             } else {
                                 Object reference;
                                 if (isPrimitive(type)) {
@@ -206,7 +207,7 @@ public class DubboBeanDefinitionParser implements 
BeanDefinitionParser {
                                     }
                                     reference = new 
RuntimeBeanReference(value);
                                 }
-                                
beanDefinition.getPropertyValues().addPropertyValue(property, reference);
+                                
beanDefinition.getPropertyValues().addPropertyValue(beanProperty, reference);
                             }
                         }
                     }
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd 
b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
index 87f2f11..cc20450 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
+++ 
b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
@@ -607,7 +607,7 @@
         <xsd:sequence minOccurs="0" maxOccurs="unbounded">
             <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
-        <xsd:attribute name="protocol" type="xsd:string" use="optional">
+        <xsd:attribute name="protocol" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The config center protocol. 
]]></xsd:documentation>
             </xsd:annotation>
@@ -617,12 +617,6 @@
                 <xsd:documentation><![CDATA[ The config center address. 
]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="env" type="xsd:string" use="optional">
-            <xsd:annotation>
-                <xsd:documentation>
-                    <![CDATA[ The config center env, an simplify alternative 
for address. ]]></xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
         <xsd:attribute name="cluster" type="xsd:string" use="optional">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The config center cluster. 
]]></xsd:documentation>
@@ -634,12 +628,17 @@
                     <![CDATA[ The group of the config center, an isolated 
space for config items in the same config center. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="appname" type="xsd:string" use="optional">
+        <xsd:attribute name="app-name" type="xsd:string" use="optional">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The group of the config center. 
]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="configfile" type="xsd:string" use="optional">
+        <xsd:attribute name="config-file" type="xsd:string" use="optional">
+            <xsd:annotation>
+                <xsd:documentation><![CDATA[ The key used to get the configs 
at startup. ]]></xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="app-config-file" type="xsd:string" use="optional">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The key used to get the configs 
at startup. ]]></xsd:documentation>
             </xsd:annotation>
@@ -659,12 +658,18 @@
                 <xsd:documentation><![CDATA[ The request timeout. 
]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="enable" type="xsd:boolean" use="optional">
+        <xsd:attribute name="highest-priority" type="xsd:boolean" 
use="optional">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ Whether the configs from config center has the 
highest priority. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
+        <xsd:attribute name="from-spring" type="xsd:boolean" use="optional">
+            <xsd:annotation>
+                <xsd:documentation>
+                    <![CDATA[ Load the config items by Dubbo itself or Spring. 
]]></xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
         <xsd:attribute name="check" type="xsd:boolean" use="optional">
             <xsd:annotation>
                 <xsd:documentation>
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd 
b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index c36e59c..5118653 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -611,12 +611,6 @@
                 <xsd:documentation><![CDATA[ The config center address. 
]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="env" type="xsd:string" use="optional">
-            <xsd:annotation>
-                <xsd:documentation>
-                    <![CDATA[ The config center env, an simplify alternative 
for address. ]]></xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
         <xsd:attribute name="cluster" type="xsd:string" use="optional">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The config center cluster. 
]]></xsd:documentation>
@@ -628,12 +622,17 @@
                     <![CDATA[ The group of the config center, an isolated 
space for config items in the same config center. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="appname" type="xsd:string" use="optional">
+        <xsd:attribute name="app-name" type="xsd:string" use="optional">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The group of the config center. 
]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="configfile" type="xsd:string" use="optional">
+        <xsd:attribute name="config-file" type="xsd:string" use="optional">
+            <xsd:annotation>
+                <xsd:documentation><![CDATA[ The key used to get the configs 
at startup. ]]></xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="app-config-file" type="xsd:string" use="optional">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The key used to get the configs 
at startup. ]]></xsd:documentation>
             </xsd:annotation>
@@ -653,12 +652,18 @@
                 <xsd:documentation><![CDATA[ The request timeout. 
]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="enable" type="xsd:boolean" use="optional">
+        <xsd:attribute name="highest-priority" type="xsd:boolean" 
use="optional">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ Whether the configs from config center has the 
highest priority. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
+        <xsd:attribute name="from-spring" type="xsd:boolean" use="optional">
+            <xsd:annotation>
+                <xsd:documentation>
+                    <![CDATA[ Load the config items by Dubbo itself or Spring. 
]]></xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
         <xsd:attribute name="check" type="xsd:boolean" use="optional">
             <xsd:annotation>
                 <xsd:documentation>
diff --git 
a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java
 
b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java
index 20d8b72..5b8d149 100644
--- 
a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java
+++ 
b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java
@@ -16,7 +16,6 @@
  */
 package org.apache.dubbo.configcenter;
 
-import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.config.AbstractConfiguration;
 
@@ -49,7 +48,7 @@ public abstract class 
AbstractDynamicConfiguration<TargetListener> extends Abstr
 
     @Override
     public void addListener(String key, ConfigurationListener listener) {
-        addListener(key, Constants.DUBBO, listener);
+        addListener(key, DEFAULT_GROUP, listener);
     }
 
     @Override
@@ -80,7 +79,7 @@ public abstract class 
AbstractDynamicConfiguration<TargetListener> extends Abstr
 
     @Override
     public void removeListener(String key, ConfigurationListener listener) {
-        removeListener(key, Constants.DUBBO, listener);
+        removeListener(key, DEFAULT_GROUP, listener);
     }
 
     @Override
diff --git 
a/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java
 
b/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java
index 59d2658..62cbab1 100644
--- 
a/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java
+++ 
b/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java
@@ -57,7 +57,7 @@ public class ApolloDynamicConfiguration extends 
AbstractDynamicConfiguration<Apo
     @Override
     public void initWith(URL url) {
         // Instead of using Dubbo's configuration, I would suggest use the 
original configuration method Apollo provides.
-        String configEnv = url.getParameter(Constants.CONFIG_ENV_KEY);
+        String configEnv = url.getParameter(APOLLO_ENV_KEY);
         String configAddr = url.getBackupAddress();
         String configCluster = url.getParameter(Constants.CONFIG_CLUSTER_KEY);
         if (configEnv != null) {
@@ -70,7 +70,7 @@ public class ApolloDynamicConfiguration extends 
AbstractDynamicConfiguration<Apo
             System.setProperty(APOLLO_CLUSTER_KEY, configCluster);
         }
 
-        dubboConfig = 
ConfigService.getConfig(url.getParameter(Constants.CONFIG_GROUP_KEY, 
DEFAULT_GROUP));
+        dubboConfig = 
ConfigService.getConfig(url.getParameter(Constants.CONFIG_NAMESPACE_KEY, 
DEFAULT_GROUP));
         // Decide to fail or to continue when failed to connect to remote 
server.
         boolean check = url.getParameter(Constants.CONFIG_CHECK_KEY, true);
         if (dubboConfig.getSourceType() != ConfigSourceType.REMOTE) {
diff --git 
a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
 
b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
index 0bc9b99..0739d51 100644
--- 
a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
+++ 
b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
@@ -63,7 +63,7 @@ public class ZookeeperDynamicConfiguration extends 
AbstractDynamicConfiguration<
     }
 
     protected void initWith(URL url) {
-        rootPath = "/" + url.getParameter(CONFIG_NAMESPACE_KEY, 
Constants.DUBBO) + "/config";
+        rootPath = "/" + url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP) 
+ "/config";
 
         RetryPolicy policy = new ExponentialBackoffRetry(1000, 3);
         int sessionTimeout = url.getParameter("config.session.timeout", 60 * 
1000);
diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
index 2e7d0c5..3239bed 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
@@ -57,7 +57,6 @@ public class ContextFilter extends AbstractPostProcessFilter {
 
         // merged from dubbox
         // we may already added some attachments into RpcContext before this 
filter (e.g. in rest protocol)
-        // TODO
         if (attachments != null) {
             if (RpcContext.getContext().getAttachments() != null) {
                 RpcContext.getContext().getAttachments().putAll(attachments);

Reply via email to