diff --git a/pom.xml b/pom.xml
index d67aaaf9..3294196b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,7 +98,7 @@
spring-cloud-alibaba-fescar
spring-cloud-stream-binder-rocketmq
spring-cloud-alibaba-nacos-config-server
-
+ spring-cloud-alibaba-dubbo
spring-cloud-alicloud-context
spring-cloud-alibaba-examples
spring-cloud-alibaba-test
diff --git a/spring-cloud-alibaba-dubbo/pom.xml b/spring-cloud-alibaba-dubbo/pom.xml
index d707cfb5..615f6272 100644
--- a/spring-cloud-alibaba-dubbo/pom.xml
+++ b/spring-cloud-alibaba-dubbo/pom.xml
@@ -179,7 +179,7 @@
org.apache.dubbo
dubbo-spring-boot-starter
- ${dubbo-spring-boot.version}
+ ${dubbo.version}
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboServiceAutoConfiguration.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboServiceAutoConfiguration.java
index 02f190de..52d964e5 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboServiceAutoConfiguration.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboServiceAutoConfiguration.java
@@ -16,12 +16,9 @@
*/
package org.springframework.cloud.alibaba.dubbo.autoconfigure;
-import org.apache.dubbo.common.utils.Assert;
-import org.apache.dubbo.config.spring.util.PropertySourcesUtils;
-
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
import org.springframework.cloud.alibaba.dubbo.env.DubboCloudProperties;
import org.springframework.cloud.alibaba.dubbo.service.DubboGenericServiceExecutionContextFactory;
import org.springframework.cloud.alibaba.dubbo.service.DubboGenericServiceFactory;
@@ -33,17 +30,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
-import org.springframework.core.env.AbstractEnvironment;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.MapPropertySource;
-import org.springframework.core.env.MutablePropertySources;
+import org.springframework.core.env.Environment;
import org.springframework.core.env.PropertyResolver;
-import org.springframework.lang.Nullable;
-
-import java.util.Map;
-
-import static org.apache.dubbo.spring.boot.util.DubboUtils.BASE_PACKAGES_PROPERTY_RESOLVER_BEAN_NAME;
-import static org.apache.dubbo.spring.boot.util.DubboUtils.DUBBO_SCAN_PREFIX;
/**
* Spring Boot Auto-Configuration class for Dubbo Service
@@ -72,80 +60,14 @@ public class DubboServiceAutoConfiguration {
}
/**
- * Bugfix code for an issue : https://github.com/apache/incubator-dubbo-spring-boot-project/issues/459
+ * Build a primary {@link PropertyResolver} bean to {@link Autowired @Autowired}
*
- * @param environment {@link ConfigurableEnvironment}
- * @return a Bean of {@link PropertyResolver}
+ * @param environment {@link Environment}
+ * @return alias bean for {@link Environment}
*/
+ @Bean
@Primary
- @Bean(name = BASE_PACKAGES_PROPERTY_RESOLVER_BEAN_NAME)
- public PropertyResolver dubboScanBasePackagesPropertyResolver(ConfigurableEnvironment environment) {
- ConfigurableEnvironment propertyResolver = new AbstractEnvironment() {
- @Override
- protected void customizePropertySources(MutablePropertySources propertySources) {
- Map dubboScanProperties = PropertySourcesUtils.getSubProperties(environment, DUBBO_SCAN_PREFIX);
- propertySources.addLast(new MapPropertySource("dubboScanProperties", dubboScanProperties));
- }
- };
- ConfigurationPropertySources.attach(propertyResolver);
- return new DelegatingPropertyResolver(propertyResolver);
- }
-
-
- private static class DelegatingPropertyResolver implements PropertyResolver {
-
- private final PropertyResolver delegate;
-
- DelegatingPropertyResolver(PropertyResolver delegate) {
- Assert.notNull(delegate, "The delegate of PropertyResolver must not be null");
- this.delegate = delegate;
- }
-
- @Override
- public boolean containsProperty(String key) {
- return delegate.containsProperty(key);
- }
-
- @Override
- @Nullable
- public String getProperty(String key) {
- return delegate.getProperty(key);
- }
-
- @Override
- public String getProperty(String key, String defaultValue) {
- return delegate.getProperty(key, defaultValue);
- }
-
- @Override
- @Nullable
- public T getProperty(String key, Class targetType) {
- return delegate.getProperty(key, targetType);
- }
-
- @Override
- public T getProperty(String key, Class targetType, T defaultValue) {
- return delegate.getProperty(key, targetType, defaultValue);
- }
-
- @Override
- public String getRequiredProperty(String key) throws IllegalStateException {
- return delegate.getRequiredProperty(key);
- }
-
- @Override
- public T getRequiredProperty(String key, Class targetType) throws IllegalStateException {
- return delegate.getRequiredProperty(key, targetType);
- }
-
- @Override
- public String resolvePlaceholders(String text) {
- return delegate.resolvePlaceholders(text);
- }
-
- @Override
- public String resolveRequiredPlaceholders(String text) throws IllegalArgumentException {
- return delegate.resolveRequiredPlaceholders(text);
- }
+ public PropertyResolver primaryPropertyResolver(Environment environment) {
+ return environment;
}
}
\ No newline at end of file
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/AbstractSpringCloudRegistry.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/AbstractSpringCloudRegistry.java
index c52cf231..4674f0e1 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/AbstractSpringCloudRegistry.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/registry/AbstractSpringCloudRegistry.java
@@ -18,7 +18,6 @@ package org.springframework.cloud.alibaba.dubbo.registry;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.registry.RegistryFactory;
import org.apache.dubbo.registry.support.FailbackRegistry;
@@ -29,20 +28,21 @@ import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
import java.util.LinkedHashSet;
-import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import static java.util.Collections.emptyList;
import static java.util.Collections.singleton;
import static org.apache.dubbo.common.Constants.PROVIDER_SIDE;
import static org.apache.dubbo.common.Constants.SIDE_KEY;
import static org.springframework.util.ObjectUtils.isEmpty;
+import static org.springframework.util.StringUtils.hasText;
/**
* Abstract Dubbo {@link RegistryFactory} uses Spring Cloud Service Registration abstraction, whose protocol is "spring-cloud"
@@ -144,13 +144,8 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
}
}
- private void filterServiceNames(Collection serviceNames) {
- filter(serviceNames, new Filter() {
- @Override
- public boolean accept(String serviceName) {
- return supports(serviceName);
- }
- });
+ private Set filterServiceNames(Collection serviceNames) {
+ return new LinkedHashSet<>(filter(serviceNames, this::supports));
}
protected abstract boolean supports(String serviceName);
@@ -185,8 +180,7 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
*/
protected Set getServiceNamesForOps(URL url) {
Set serviceNames = getAllServiceNames();
- filterServiceNames(serviceNames);
- return serviceNames;
+ return filterServiceNames(serviceNames);
}
protected abstract String getServiceName(URL url);
@@ -206,7 +200,7 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
}
protected List getServiceInstances(String serviceName) {
- return discoveryClient.getInstances(serviceName);
+ return hasText(serviceName) ? discoveryClient.getInstances(serviceName) : emptyList();
}
private void subscribe(final URL url, final NotifyListener listener, final Collection serviceNames) {
@@ -227,67 +221,9 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
*/
protected abstract void notifySubscriber(URL url, NotifyListener listener, List serviceInstances);
- protected void filterHealthyInstances(Collection instances) {
- filter(instances, new Filter() {
- @Override
- public boolean accept(ServiceInstance data) {
- // TODO check the details of status
-// return serviceRegistry.getStatus(new DubboRegistration(data)) != null;
- return true;
- }
- });
+ protected Collection filter(Collection collection, Predicate filter) {
+ return collection.stream()
+ .filter(filter)
+ .collect(Collectors.toList());
}
-
- protected List buildURLs(URL consumerURL, Collection serviceInstances) {
- if (serviceInstances.isEmpty()) {
- return Collections.emptyList();
- }
- List urls = new LinkedList();
- for (ServiceInstance serviceInstance : serviceInstances) {
- URL url = buildURL(serviceInstance);
- if (UrlUtils.isMatch(consumerURL, url)) {
- urls.add(url);
- }
- }
- return urls;
- }
-
- private URL buildURL(ServiceInstance serviceInstance) {
- URL url = new URL(serviceInstance.getMetadata().get(Constants.PROTOCOL_KEY),
- serviceInstance.getHost(),
- serviceInstance.getPort(),
- serviceInstance.getMetadata());
- return url;
- }
-
- private void filter(Collection collection, Filter filter) {
- Iterator iterator = collection.iterator();
- while (iterator.hasNext()) {
- T data = iterator.next();
- if (!filter.accept(data)) { // remove if not accept
- iterator.remove();
- }
- }
- }
-
- private static T[] of(T... values) {
- return values;
- }
-
- /**
- * A filter
- */
- public interface Filter {
-
- /**
- * Tests whether or not the specified data should be accepted.
- *
- * @param data The data to be tested
- * @return true
if and only if data
- * should be accepted
- */
- boolean accept(T data);
-
- }
-
}
diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java
index f4d4ae48..0dadefc4 100644
--- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java
+++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java
@@ -68,7 +68,7 @@ public class NacosDiscoveryProperties {
/**
* watch delay,duration to pull new service from nacos server.
*/
- private long watchDelay = 5000;
+ private long watchDelay = 30000;
/**
* nacos naming log file name
diff --git a/spring-cloud-starter-alibaba/pom.xml b/spring-cloud-starter-alibaba/pom.xml
index 55f2d696..44b44145 100644
--- a/spring-cloud-starter-alibaba/pom.xml
+++ b/spring-cloud-starter-alibaba/pom.xml
@@ -19,6 +19,6 @@
spring-cloud-starter-alibaba-fescar
spring-cloud-starter-stream-rocketmq
spring-cloud-starter-bus-rocketmq
-
+ spring-cloud-starter-dubbo
\ No newline at end of file