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

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


The following commit(s) were added to refs/heads/master by this push:
     new 86982cf  Fix spring doesn't allow setter override. (#3066)
86982cf is described below

commit 86982cff8c342e5fc648e2ef8a22ef11d43bbd9c
Author: ken.lj <[email protected]>
AuthorDate: Wed Dec 26 20:17:28 2018 +0800

    Fix spring doesn't allow setter override. (#3066)
    
    * Metadata does not to consider @Parameter(append, escape)
    
    * Fix spring doesn't support setter override: change method name from 
setProtocol/setRegistry to setProtocolIds/setRegistryIds
---
 .../org/apache/dubbo/config/AbstractConfig.java    | 21 ------------
 .../dubbo/config/AbstractInterfaceConfig.java      | 24 +++++++-------
 .../apache/dubbo/config/AbstractServiceConfig.java | 10 +++---
 .../org/apache/dubbo/config/ApplicationConfig.java | 10 +++---
 .../org/apache/dubbo/config/ServiceConfig.java     | 24 +++++++-------
 .../apache/dubbo/config/spring/ReferenceBean.java  | 20 ++++++------
 .../apache/dubbo/config/spring/ServiceBean.java    | 38 +++++++++++-----------
 .../spring/schema/DubboBeanDefinitionParser.java   |  9 ++++-
 .../META-INF/spring/dubbo-demo-consumer.xml        |  4 +--
 .../META-INF/spring/dubbo-demo-provider.xml        |  4 +--
 10 files changed, 75 insertions(+), 89 deletions(-)

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 6945266..418cf3e 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
@@ -478,31 +478,10 @@ public abstract class AbstractConfig implements 
Serializable {
                     Object value = method.invoke(this);
                     String str = String.valueOf(value).trim();
                     if (value != null && str.length() > 0) {
-                        // ignore escape, keep the original value.
-                        /*if (parameter != null && parameter.escaped()) {
-                            str = URL.encode(str);
-                        }*/
-                        if (parameter != null && parameter.append()) {
-                            String pre = 
String.valueOf(metaData.get(Constants.DEFAULT_KEY + "." + key));
-                            if (pre != null && pre.length() > 0) {
-                                str = pre + "," + str;
-                            }
-                            pre = String.valueOf(metaData.get(key));
-                            if (pre != null && pre.length() > 0) {
-                                str = pre + "," + str;
-                            }
-                        }
-                      /*  if (prefix != null && prefix.length() > 0) {
-                            key = prefix + "." + key;
-                        }*/
                         metaData.put(key, str);
                     } else {
                         metaData.put(key, null);
                     }
-                    // TODO check required somewhere else.
-                    /*else if (parameter != null && parameter.required()) {
-                        throw new 
IllegalStateException(this.getClass().getSimpleName() + "." + key + " == null");
-                    }*/
                 } else if ("getParameters".equals(name)
                         && Modifier.isPublic(method.getModifiers())
                         && method.getParameterTypes().length == 0
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 c8e2dce..6bcb775 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
@@ -97,7 +97,7 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
     // registry centers
     protected List<RegistryConfig> registries;
 
-    protected String registryLiteral;
+    protected String registryIds;
 
     // connection events
     protected String onconnect;
@@ -114,7 +114,7 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
     protected void checkRegistry() {
         loadRegistriesFromBackwardConfig();
 
-        convertRegistryLiteralToRegistries();
+        convertRegistryIdsToRegistries();
 
         for (RegistryConfig registryConfig : registries) {
             registryConfig.refresh();
@@ -386,24 +386,24 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
         }
     }
 
-    private void convertRegistryLiteralToRegistries() {
-        if (StringUtils.isEmpty(registryLiteral) && (registries == null || 
registries.isEmpty())) {
+    private void convertRegistryIdsToRegistries() {
+        if (StringUtils.isEmpty(registryIds) && (registries == null || 
registries.isEmpty())) {
             Set<String> configedRegistries = new HashSet<>();
             
configedRegistries.addAll(getSubProperties(Environment.getInstance()
                     .getExternalConfigurationMap(), 
Constants.REGISTRIES_SUFFIX));
             
configedRegistries.addAll(getSubProperties(Environment.getInstance()
                     .getAppExternalConfigurationMap(), 
Constants.REGISTRIES_SUFFIX));
 
-            registryLiteral = String.join(",", configedRegistries);
+            registryIds = String.join(",", configedRegistries);
         }
 
-        if (StringUtils.isEmpty(registryLiteral)) {
+        if (StringUtils.isEmpty(registryIds)) {
             if (registries == null || registries.isEmpty()) {
                 registries = new ArrayList<>();
                 registries.add(new RegistryConfig());
             }
         } else {
-            String[] arr = 
Constants.COMMA_SPLIT_PATTERN.split(registryLiteral);
+            String[] arr = Constants.COMMA_SPLIT_PATTERN.split(registryIds);
             if (registries == null || registries.isEmpty()) {
                 registries = new ArrayList<>();
             }
@@ -415,7 +415,7 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
                 }
             });
             if (registries.size() > arr.length) {
-                throw new IllegalStateException("Too much registries found, 
the registries assigned to this service are :" + registryLiteral + ", but got " 
+ registries
+                throw new IllegalStateException("Too much registries found, 
the registries assigned to this service are :" + registryIds + ", but got " + 
registries
                         .size() + " registries!");
             }
         }
@@ -597,12 +597,12 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
     }
 
     @Parameter(excluded = true)
-    public String getRegistryLiteral() {
-        return registryLiteral;
+    public String getRegistryIds() {
+        return registryIds;
     }
 
-    public void setRegistry(String registryLiteral) {
-        this.registryLiteral = registryLiteral;
+    public void setRegistryIds(String registryIds) {
+        this.registryIds = registryIds;
     }
 
     public MonitorConfig getMonitor() {
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
index 2b3ae11..2f3311b 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
@@ -62,7 +62,7 @@ public abstract class AbstractServiceConfig extends 
AbstractInterfaceConfig {
     // access log
     protected String accesslog;
     protected List<ProtocolConfig> protocols;
-    protected String protocolLiteral;
+    protected String protocolIds;
     // provider tag
     protected String tag;
     // max allowed execute times
@@ -176,12 +176,12 @@ public abstract class AbstractServiceConfig extends 
AbstractInterfaceConfig {
     }
 
     @Parameter(excluded = true)
-    public String getProtocolLiteral() {
-        return protocolLiteral;
+    public String getProtocolIds() {
+        return protocolIds;
     }
 
-    public void setProtocol(String protocolLiteral) {
-        this.protocolLiteral = protocolLiteral;
+    public void setProtocolIds(String protocolIds) {
+        this.protocolIds = protocolIds;
     }
 
     public String getAccesslog() {
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
index 37ae811..a5c29db 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
@@ -62,7 +62,7 @@ public class ApplicationConfig extends AbstractConfig {
 
     // registry centers
     private List<RegistryConfig> registries;
-    private String registryLiteral;
+    private String registryIds;
 
     // monitor center
     private MonitorConfig monitor;
@@ -179,12 +179,12 @@ public class ApplicationConfig extends AbstractConfig {
     }
 
     @Parameter(excluded = true)
-    public String getRegistryLiteral() {
-        return registryLiteral;
+    public String getRegistryIds() {
+        return registryIds;
     }
 
-    public void setRegistry(String registryLiteral) {
-        this.registryLiteral = registryLiteral;
+    public void setRegistryIds(String registryIds) {
+        this.registryIds = registryIds;
     }
 
     public MonitorConfig getMonitor() {
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 1d20a57..db65ff7 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -91,7 +91,7 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
     // method configuration
     private List<MethodConfig> methods;
     private ProviderConfig provider;
-    private String providerLiteral;
+    private String providerIds;
     private transient volatile boolean exported;
 
     private transient volatile boolean unexported;
@@ -726,7 +726,7 @@ public class ServiceConfig<T> extends AbstractServiceConfig 
{
             setProtocols(provider.getProtocols());
         }
 
-        convertProtocolLiteralToProtocols();
+        convertProtocolIdsToProtocols();
 
         for (ProtocolConfig protocolConfig : protocols) {
             if (StringUtils.isEmpty(protocolConfig.getName())) {
@@ -740,24 +740,24 @@ public class ServiceConfig<T> extends 
AbstractServiceConfig {
         }
     }
 
-    private void convertProtocolLiteralToProtocols() {
-        if (StringUtils.isEmpty(protocolLiteral) && (protocols == null || 
protocols.isEmpty())) {
+    private void convertProtocolIdsToProtocols() {
+        if (StringUtils.isEmpty(protocolIds) && (protocols == null || 
protocols.isEmpty())) {
             List<String> configedProtocols = new ArrayList<>();
             configedProtocols.addAll(getSubProperties(Environment.getInstance()
                     .getExternalConfigurationMap(), 
Constants.PROTOCOLS_SUFFIX));
             configedProtocols.addAll(getSubProperties(Environment.getInstance()
                     .getAppExternalConfigurationMap(), 
Constants.PROTOCOLS_SUFFIX));
 
-            protocolLiteral = String.join(",", configedProtocols);
+            protocolIds = String.join(",", configedProtocols);
         }
 
-        if (StringUtils.isEmpty(protocolLiteral)) {
+        if (StringUtils.isEmpty(protocolIds)) {
             if (protocols == null || protocols.isEmpty()) {
                 protocols = new ArrayList<>();
                 protocols.add(new ProtocolConfig());
             }
         } else {
-            String[] arr = 
Constants.COMMA_SPLIT_PATTERN.split(protocolLiteral);
+            String[] arr = Constants.COMMA_SPLIT_PATTERN.split(protocolIds);
             if (protocols == null || protocols.isEmpty()) {
                 protocols = new ArrayList<>();
             }
@@ -769,7 +769,7 @@ public class ServiceConfig<T> extends AbstractServiceConfig 
{
                 }
             });
             if (protocols.size() > arr.length) {
-                throw new IllegalStateException("Too much protocols found, the 
protocols comply to this service are :" + protocolLiteral + " but got " + 
protocols
+                throw new IllegalStateException("Too much protocols found, the 
protocols comply to this service are :" + protocolIds + " but got " + protocols
                         .size() + " registries!");
             }
         }
@@ -859,12 +859,12 @@ public class ServiceConfig<T> extends 
AbstractServiceConfig {
     }
 
     @Parameter(excluded = true)
-    public String getProviderLiteral() {
-        return providerLiteral;
+    public String getProviderIds() {
+        return providerIds;
     }
 
-    public void setProvider(String providerLiteral) {
-        this.providerLiteral = providerLiteral;
+    public void setProviderIds(String providerIds) {
+        this.providerIds = providerIds;
     }
 
     public String getGeneric() {
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index b1b360e..fd7025a 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -142,12 +142,12 @@ public class ReferenceBean<T> extends ReferenceConfig<T> 
implements FactoryBean,
             }
         }
 
-        if (StringUtils.isEmpty(getRegistryLiteral())) {
-            if (getApplication() != null && 
StringUtils.isNotEmpty(getApplication().getRegistryLiteral())) {
-                setRegistry(getApplication().getRegistryLiteral());
+        if (StringUtils.isEmpty(getRegistryIds())) {
+            if (getApplication() != null && 
StringUtils.isNotEmpty(getApplication().getRegistryIds())) {
+                setRegistryIds(getApplication().getRegistryIds());
             }
-            if (getConsumer() != null && 
StringUtils.isNotEmpty(getConsumer().getRegistryLiteral())) {
-                setRegistry(getConsumer().getRegistryLiteral());
+            if (getConsumer() != null && 
StringUtils.isNotEmpty(getConsumer().getRegistryIds())) {
+                setRegistryIds(getConsumer().getRegistryIds());
             }
         }
 
@@ -157,17 +157,17 @@ public class ReferenceBean<T> extends ReferenceConfig<T> 
implements FactoryBean,
             Map<String, RegistryConfig> registryConfigMap = applicationContext 
== null ? null : 
BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, 
RegistryConfig.class, false, false);
             if (registryConfigMap != null && registryConfigMap.size() > 0) {
                 List<RegistryConfig> registryConfigs = new ArrayList<>();
-                if (StringUtils.isNotEmpty(registryLiteral)) {
-                    
Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(registryLiteral)).forEach(registryLiteral
 -> {
-                        if (registryConfigMap.containsKey(registryLiteral)) {
-                            
registryConfigs.add(registryConfigMap.get(registryLiteral));
+                if (StringUtils.isNotEmpty(registryIds)) {
+                    
Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(registryIds)).forEach(id -> {
+                        if (registryConfigMap.containsKey(id)) {
+                            registryConfigs.add(registryConfigMap.get(id));
                         }
                     });
                 }
 
                 if (registryConfigs.isEmpty()) {
                     for (RegistryConfig config : registryConfigMap.values()) {
-                        if (StringUtils.isEmpty(registryLiteral)) {
+                        if (StringUtils.isEmpty(registryIds)) {
                             registryConfigs.add(config);
                         }
                     }
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index 6d83374..cb6d097 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -176,12 +176,12 @@ public class ServiceBean<T> extends ServiceConfig<T> 
implements InitializingBean
             }
         }
 
-        if (StringUtils.isEmpty(getRegistryLiteral())) {
-            if (getApplication() != null && 
StringUtils.isNotEmpty(getApplication().getRegistryLiteral())) {
-                setRegistry(getApplication().getRegistryLiteral());
+        if (StringUtils.isEmpty(getRegistryIds())) {
+            if (getApplication() != null && 
StringUtils.isNotEmpty(getApplication().getRegistryIds())) {
+                setRegistryIds(getApplication().getRegistryIds());
             }
-            if (getProvider() != null && 
StringUtils.isNotEmpty(getProvider().getRegistryLiteral())) {
-                setRegistry(getProvider().getRegistryLiteral());
+            if (getProvider() != null && 
StringUtils.isNotEmpty(getProvider().getRegistryIds())) {
+                setRegistryIds(getProvider().getRegistryIds());
             }
         }
 
@@ -191,17 +191,17 @@ public class ServiceBean<T> extends ServiceConfig<T> 
implements InitializingBean
             Map<String, RegistryConfig> registryConfigMap = applicationContext 
== null ? null : 
BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, 
RegistryConfig.class, false, false);
             if (registryConfigMap != null && registryConfigMap.size() > 0) {
                 List<RegistryConfig> registryConfigs = new ArrayList<>();
-                if (StringUtils.isNotEmpty(registryLiteral)) {
-                    
Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(registryLiteral)).forEach(registryLiteral
 -> {
-                        if (registryConfigMap.containsKey(registryLiteral)) {
-                            
registryConfigs.add(registryConfigMap.get(registryLiteral));
+                if (StringUtils.isNotEmpty(registryIds)) {
+                    
Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(registryIds)).forEach(id -> {
+                        if (registryConfigMap.containsKey(id)) {
+                            registryConfigs.add(registryConfigMap.get(id));
                         }
                     });
                 }
 
                 if (registryConfigs.isEmpty()) {
                     for (RegistryConfig config : registryConfigMap.values()) {
-                        if (StringUtils.isEmpty(registryLiteral)) {
+                        if (StringUtils.isEmpty(registryIds)) {
                             registryConfigs.add(config);
                         }
                     }
@@ -249,9 +249,9 @@ public class ServiceBean<T> extends ServiceConfig<T> 
implements InitializingBean
             }
         }
 
-        if (StringUtils.isEmpty(getProtocolLiteral())) {
-            if (getProvider() != null && 
StringUtils.isNotEmpty(getProvider().getProtocolLiteral())) {
-                setProtocol(getProvider().getProtocolLiteral());
+        if (StringUtils.isEmpty(getProtocolIds())) {
+            if (getProvider() != null && 
StringUtils.isNotEmpty(getProvider().getProtocolIds())) {
+                setProtocolIds(getProvider().getProtocolIds());
             }
         }
 
@@ -260,18 +260,18 @@ public class ServiceBean<T> extends ServiceConfig<T> 
implements InitializingBean
             Map<String, ProtocolConfig> protocolConfigMap = applicationContext 
== null ? null : 
BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, 
ProtocolConfig.class, false, false);
             if (protocolConfigMap != null && protocolConfigMap.size() > 0) {
                 List<ProtocolConfig> protocolConfigs = new 
ArrayList<ProtocolConfig>();
-                if (StringUtils.isNotEmpty(getProtocolLiteral())) {
-                    
Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(getProtocolLiteral()))
-                            .forEach(protocolLiteral -> {
-                                if 
(protocolConfigMap.containsKey(protocolLiteral)) {
-                                    
protocolConfigs.add(protocolConfigMap.get(protocolLiteral));
+                if (StringUtils.isNotEmpty(getProtocolIds())) {
+                    
Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(getProtocolIds()))
+                            .forEach(id -> {
+                                if (protocolConfigMap.containsKey(id)) {
+                                    
protocolConfigs.add(protocolConfigMap.get(id));
                                 }
                             });
                 }
 
                 if (protocolConfigs.isEmpty()) {
                     for (ProtocolConfig config : protocolConfigMap.values()) {
-                        if (StringUtils.isEmpty(protocolLiteral)) {
+                        if (StringUtils.isEmpty(protocolIds)) {
                             protocolConfigs.add(config);
                         }
                     }
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 bbb1017..3b59de3 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
@@ -49,6 +49,7 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Date;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.regex.Pattern;
 
@@ -166,7 +167,13 @@ public class DubboBeanDefinitionParser implements 
BeanDefinitionParser {
                                 
registryConfig.setAddress(RegistryConfig.NO_AVAILABLE);
                                 
beanDefinition.getPropertyValues().addPropertyValue(beanProperty, 
registryConfig);
                             } else if ("provider".equals(property) || 
"protocol".equals(property) || "registry".equals(property)) {
-                                
beanDefinition.getPropertyValues().addPropertyValue(beanProperty, value);
+                                /**
+                                 * For 'provider' 'protocol' 'registry', keep 
literal value (should be id/name) and set the value to 'registryIds' 
'providerIds' protocolIds'
+                                 * The following process should make sure each 
id refers to the corresponding instance, here's how to find the instance for 
different use cases:
+                                 * 1. Spring, check existing bean by id, 
see{@link ServiceBean#afterPropertiesSet()}; then try to use id to find configs 
defined in remote Config Center
+                                 * 2. API, directly use id to find configs 
defined in remote Config Center; if all config instances are defined locally, 
please use {@link org.apache.dubbo.config.ServiceConfig#setRegistries(List)}
+                                 */
+                                
beanDefinition.getPropertyValues().addPropertyValue(beanProperty + "Ids", 
value);
                             } else {
                                 Object reference;
                                 if (isPrimitive(type)) {
diff --git 
a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
 
b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
index dc4bd42..8efa9fe 100644
--- 
a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
+++ 
b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
@@ -25,11 +25,11 @@
 
     <!-- use multicast registry center to discover service -->
 
-    <dubbo:registry group="dubboregistrygroup1" 
address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:registry id="registry2" group="dubboregistrygroup1" 
address="zookeeper://127.0.0.1:2181"/>
 
     <!-- generate proxy for the remote service, then demoService can be used 
in the same way as the
     local regular interface -->
-    <dubbo:reference id="demoService" check="false"
+    <dubbo:reference id="demoService" registry="registry2" check="false"
                      interface="org.apache.dubbo.demo.DemoService" 
version="1.0.4" group="dd-test,dd-test1"/>
 
 </beans>
diff --git 
a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
 
b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
index 196f239..0df47d6 100644
--- 
a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
+++ 
b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
@@ -25,7 +25,7 @@
     <dubbo:application name="demo-provider"/>
     <!--<dubbo:provider tag="tag3"/>-->
 
-    <dubbo:registry group="dubboregistrygroup1" 
address="zookeeper://127.0.0.1:2181">
+    <dubbo:registry id="registry1" group="dubboregistrygroup1" 
address="zookeeper://127.0.0.1:2181">
     </dubbo:registry>
 
     <!--<dubbo:configcenter 
address="zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182" 
namespace="dubboregistrygroup1"-->
@@ -40,7 +40,7 @@
     <bean id="demoService" 
class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
 
     <!-- declare the service interface to be exported -->
-    <dubbo:service interface="org.apache.dubbo.demo.DemoService" 
ref="demoService" version="1.0.4" group="dd-test"/>
+    <dubbo:service interface="org.apache.dubbo.demo.DemoService" 
ref="demoService" version="1.0.4" group="dd-test" registry="registry1"/>
     <!-- declare the service interface to be exported -->
     <dubbo:service interface="org.apache.dubbo.demo.DemoService" 
ref="demoService" version="1.0.4" group="dd-test1"/>
 

Reply via email to