From fd924146092d2741bf3f106c67035908aa390246 Mon Sep 17 00:00:00 2001 From: Ooo0oO0o0oO <907709476@qq.com> Date: Thu, 7 May 2020 18:11:45 +0800 Subject: [PATCH] fix the issue SpringCloudRegistryFactory always create registry instance --- .../dubbo/registry/SpringCloudRegistryFactory.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java index be13cb911..a036b29d3 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java @@ -24,6 +24,7 @@ import org.apache.dubbo.common.URL; import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.RegistryFactory; +import org.apache.dubbo.registry.support.AbstractRegistryFactory; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.context.ConfigurableApplicationContext; @@ -37,7 +38,7 @@ import static java.lang.System.getProperty; * @see RegistryFactory * @see SpringCloudRegistry */ -public class SpringCloudRegistryFactory implements RegistryFactory { +public class SpringCloudRegistryFactory extends AbstractRegistryFactory { /** * Spring Cloud Protocol. @@ -65,8 +66,6 @@ public class SpringCloudRegistryFactory implements RegistryFactory { private DubboGenericServiceFactory dubboGenericServiceFactory; - private volatile boolean initialized = false; - public SpringCloudRegistryFactory() { } @@ -76,9 +75,6 @@ public class SpringCloudRegistryFactory implements RegistryFactory { } protected void init() { - if (initialized || applicationContext == null) { - return; - } this.discoveryClient = applicationContext.getBean(DiscoveryClient.class); this.dubboServiceMetadataRepository = applicationContext .getBean(DubboServiceMetadataRepository.class); @@ -90,7 +86,7 @@ public class SpringCloudRegistryFactory implements RegistryFactory { } @Override - public Registry getRegistry(URL url) { + public Registry createRegistry(URL url) { init(); return new SpringCloudRegistry(url, discoveryClient, dubboServiceMetadataRepository, dubboMetadataConfigServiceProxy,