From e32b020198a3001662aadee361247df45886b8bb Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 2 Apr 2019 09:23:40 +0800 Subject: [PATCH] Polish spring-cloud-incubator/spring-cloud-alibaba#510 : Reactor code --- .../dubbo/registry/SpringCloudRegistry.java | 2 +- ...ebApplicationEnvironmentPostProcessor.java | 28 ++++++++++++------- .../src/main/resources/application.yaml | 4 ++- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/SpringCloudRegistry.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/SpringCloudRegistry.java index 5fb3d2e4..86f24ab4 100644 --- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/SpringCloudRegistry.java +++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/SpringCloudRegistry.java @@ -55,7 +55,7 @@ public class SpringCloudRegistry extends AbstractSpringCloudRegistry { /** * The parameter name of the services of Dubbo Provider */ - public static final String DUBBO_PROVIDER_SERVICES_PARAM_NAME = "dubbo.provider-services"; + public static final String DUBBO_PROVIDER_SERVICES_PARAM_NAME = "dubbo-provider-services"; /** * All services of Dubbo Provider diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/env/DubboNonWebApplicationEnvironmentPostProcessor.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/env/DubboNonWebApplicationEnvironmentPostProcessor.java index 60faa7c3..ef72fbf0 100644 --- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/env/DubboNonWebApplicationEnvironmentPostProcessor.java +++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/env/DubboNonWebApplicationEnvironmentPostProcessor.java @@ -26,6 +26,7 @@ import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.HashMap; @@ -80,7 +81,17 @@ public class DubboNonWebApplicationEnvironmentPostProcessor implements Environme return; } - resetServerPort(environment); + MutablePropertySources propertySources = environment.getPropertySources(); + Map defaultProperties = createDefaultProperties(environment); + if (!CollectionUtils.isEmpty(defaultProperties)) { + addOrReplace(propertySources, defaultProperties); + } + } + + private Map createDefaultProperties(ConfigurableEnvironment environment) { + Map defaultProperties = new HashMap(); + resetServerPort(environment, defaultProperties); + return defaultProperties; } /** @@ -88,8 +99,9 @@ public class DubboNonWebApplicationEnvironmentPostProcessor implements Environme * or "dubbo.protcols.rest.port" * * @param environment + * @param defaultProperties */ - private void resetServerPort(ConfigurableEnvironment environment) { + private void resetServerPort(ConfigurableEnvironment environment, Map defaultProperties) { String serverPort = environment.getProperty(SERVER_PORT_PROPERTY_NAME, environment.getProperty(PORT_PROPERTY_NAME)); @@ -103,8 +115,7 @@ public class DubboNonWebApplicationEnvironmentPostProcessor implements Environme serverPort = getRestPortFromProtocolsProperties(environment); } - setServerPort(environment, serverPort); - + setServerPort(environment, serverPort, defaultProperties); } private String getRestPortFromProtocolProperty(ConfigurableEnvironment environment) { @@ -147,17 +158,14 @@ public class DubboNonWebApplicationEnvironmentPostProcessor implements Environme return index > -1 ? propertyName.substring(0, index) : null; } - private void setServerPort(ConfigurableEnvironment environment, String serverPort) { + private void setServerPort(ConfigurableEnvironment environment, String serverPort, + Map defaultProperties) { if (serverPort == null) { return; } - MutablePropertySources propertySources = environment.getPropertySources(); + defaultProperties.put(SERVER_PORT_PROPERTY_NAME, serverPort); - Map properties = new HashMap<>(); - properties.put(SERVER_PORT_PROPERTY_NAME, String.valueOf(serverPort)); - - addOrReplace(propertySources, properties); } /** diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml index 41c67146..50211ae2 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml @@ -1,7 +1,9 @@ dubbo: registry: # The Spring Cloud Dubbo's registry extension - address: spring-cloud://localhost + ## the default value of dubbo-provider-services is "*", that means to subscribe all providers, + ## thus it's optimized if subscriber specifies the required providers. + address: spring-cloud://localhost?dubbo-provider-services=${provider.application.name} # The traditional Dubbo's registry # address: zookeeper://127.0.0.1:2181 server: