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

kylixs pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0-multi-instances by this 
push:
     new 9cd9436  improve scope model of config bean
9cd9436 is described below

commit 9cd9436ec0e099a3192e6ba1eb5ae0228f2ef92e
Author: gongdewei <[email protected]>
AuthorDate: Tue Aug 31 11:22:34 2021 +0800

    improve scope model of config bean
---
 .../main/java/org/apache/dubbo/config/AbstractConfig.java  | 14 ++++++++++----
 .../java/org/apache/dubbo/config/AbstractMethodConfig.java |  5 +++++
 .../java/org/apache/dubbo/config/ConfigCenterConfig.java   |  2 +-
 .../java/org/apache/dubbo/config/MetadataReportConfig.java |  2 +-
 .../java/org/apache/dubbo/config/ReferenceConfigBase.java  |  3 ---
 .../main/java/org/apache/dubbo/config/RegistryConfig.java  |  2 +-
 .../java/org/apache/dubbo/config/ServiceConfigBase.java    |  3 ---
 7 files changed, 18 insertions(+), 13 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
index 0662a46..3346620 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
@@ -106,7 +106,11 @@ public abstract class AbstractConfig implements 
Serializable {
     protected ScopeModel scopeModel;
 
     public AbstractConfig() {
-        setScopeModel(ApplicationModel.defaultModel());
+        this(ApplicationModel.defaultModel());
+    }
+
+    public AbstractConfig(ScopeModel scopeModel) {
+        this.setScopeModel(scopeModel);
     }
 
     public static String getTagName(Class<?> cls) {
@@ -332,9 +336,11 @@ public abstract class AbstractConfig implements 
Serializable {
     }
 
     public void setScopeModel(ScopeModel scopeModel) {
-        this.scopeModel = scopeModel;
-        // REINITIALIZE SPI extension here
-        this.initExtensions();
+        if (this.scopeModel != scopeModel) {
+            this.scopeModel = scopeModel;
+            // reinitialize spi extension here
+            this.initExtensions();
+        }
     }
 
     /**
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractMethodConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractMethodConfig.java
index 2c43206..31c7abe 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractMethodConfig.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractMethodConfig.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.config;
 
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.Map;
 
@@ -95,6 +96,10 @@ public abstract class AbstractMethodConfig extends 
AbstractConfig {
      */
     protected Integer forks;
 
+    public AbstractMethodConfig() {
+        super(ApplicationModel.defaultModel().getDefaultModule());
+    }
+
     public Integer getForks() {
         return forks;
     }
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index 788f549..4133f0e 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@ -173,7 +173,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         this.address = address;
         if (address != null) {
             try {
-                URL url = URL.valueOf(address, getScopeModel());
+                URL url = URL.valueOf(address);
                 updatePropertyIfAbsent(this::getUsername, this::setUsername, 
url.getUsername());
                 updatePropertyIfAbsent(this::getPassword, this::setPassword, 
url.getPassword());
                 updatePropertyIfAbsent(this::getProtocol, this::setProtocol, 
url.getProtocol());
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
index 3cc9004..e78e776 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
@@ -139,7 +139,7 @@ public class MetadataReportConfig extends AbstractConfig {
         this.address = address;
         if (address != null) {
             try {
-                URL url = URL.valueOf(address, getScopeModel());
+                URL url = URL.valueOf(address);
 
                 // Refactor since 2.7.8
                 updatePropertyIfAbsent(this::getUsername, this::setUsername, 
url.getUsername());
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
index 30eb70d..09abf83 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
@@ -22,7 +22,6 @@ import org.apache.dubbo.common.utils.RegexProperties;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.annotation.Reference;
 import org.apache.dubbo.config.support.Parameter;
-import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.ServiceMetadata;
 import org.apache.dubbo.rpc.service.GenericService;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
@@ -76,7 +75,6 @@ public abstract class ReferenceConfigBase<T> extends 
AbstractReferenceConfig {
     public ReferenceConfigBase() {
         serviceMetadata = new ServiceMetadata();
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
-        setScopeModel(ApplicationModel.defaultModel().getDefaultModule());
     }
 
     public ReferenceConfigBase(Reference reference) {
@@ -84,7 +82,6 @@ public abstract class ReferenceConfigBase<T> extends 
AbstractReferenceConfig {
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
         appendAnnotation(Reference.class, reference);
         setMethods(MethodConfig.constructMethodConfig(reference.methods()));
-        setScopeModel(ApplicationModel.defaultModel().getDefaultModule());
     }
 
     public boolean shouldCheck() {
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
index 80c9996..f007b54 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
@@ -220,7 +220,7 @@ public class RegistryConfig extends AbstractConfig {
         this.address = address;
         if (address != null) {
             try {
-                URL url = URL.valueOf(address, getScopeModel());
+                URL url = URL.valueOf(address);
 
                 // Refactor since 2.7.8
                 updatePropertyIfAbsent(this::getUsername, this::setUsername, 
url.getUsername());
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
index c283146..8e99615 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.annotation.Service;
 import org.apache.dubbo.config.support.Parameter;
-import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.ServiceMetadata;
 import org.apache.dubbo.rpc.service.GenericService;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
@@ -84,7 +83,6 @@ public abstract class ServiceConfigBase<T> extends 
AbstractServiceConfig {
     public ServiceConfigBase() {
         serviceMetadata = new ServiceMetadata();
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
-        setScopeModel(ApplicationModel.defaultModel().getDefaultModule());
     }
 
     public ServiceConfigBase(Service service) {
@@ -92,7 +90,6 @@ public abstract class ServiceConfigBase<T> extends 
AbstractServiceConfig {
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
         appendAnnotation(Service.class, service);
         setMethods(MethodConfig.constructMethodConfig(service.methods()));
-        setScopeModel(ApplicationModel.defaultModel().getDefaultModule());
     }
 
     @Deprecated

Reply via email to