1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00

Merge pull request #1428 from CodingSinger/FIX_REGISTRY

fix the issue SpringCloudRegistryFactory always create registry instance
This commit is contained in:
Mercy Ma
2020-05-08 18:24:06 +08:00
committed by GitHub

View File

@@ -23,6 +23,7 @@ import com.alibaba.cloud.dubbo.util.JSONUtils;
import org.apache.dubbo.common.URL; import org.apache.dubbo.common.URL;
import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.RegistryFactory; import org.apache.dubbo.registry.RegistryFactory;
import org.apache.dubbo.registry.support.AbstractRegistryFactory;
import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
@@ -37,7 +38,7 @@ import static java.lang.System.getProperty;
* @see RegistryFactory * @see RegistryFactory
* @see SpringCloudRegistry * @see SpringCloudRegistry
*/ */
public class SpringCloudRegistryFactory implements RegistryFactory { public class SpringCloudRegistryFactory extends AbstractRegistryFactory {
/** /**
* Spring Cloud Protocol. * Spring Cloud Protocol.
@@ -65,8 +66,6 @@ public class SpringCloudRegistryFactory implements RegistryFactory {
private DubboGenericServiceFactory dubboGenericServiceFactory; private DubboGenericServiceFactory dubboGenericServiceFactory;
private volatile boolean initialized = false;
public SpringCloudRegistryFactory() { public SpringCloudRegistryFactory() {
} }
@@ -76,9 +75,6 @@ public class SpringCloudRegistryFactory implements RegistryFactory {
} }
protected void init() { protected void init() {
if (initialized || applicationContext == null) {
return;
}
this.discoveryClient = applicationContext.getBean(DiscoveryClient.class); this.discoveryClient = applicationContext.getBean(DiscoveryClient.class);
this.dubboServiceMetadataRepository = applicationContext this.dubboServiceMetadataRepository = applicationContext
.getBean(DubboServiceMetadataRepository.class); .getBean(DubboServiceMetadataRepository.class);
@@ -90,7 +86,7 @@ public class SpringCloudRegistryFactory implements RegistryFactory {
} }
@Override @Override
public Registry getRegistry(URL url) { public Registry createRegistry(URL url) {
init(); init();
return new SpringCloudRegistry(url, discoveryClient, return new SpringCloudRegistry(url, discoveryClient,
dubboServiceMetadataRepository, dubboMetadataConfigServiceProxy, dubboServiceMetadataRepository, dubboMetadataConfigServiceProxy,