You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/11/25 03:47:20 UTC

[dubbo] branch 3.0 updated: Add ScopeModel Constructor for Config (#9314)

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

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 16319c5  Add ScopeModel Constructor for Config (#9314)
16319c5 is described below

commit 16319c543aae7ab05ccacfb44de52feffb5f4bb1
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Thu Nov 25 11:46:53 2021 +0800

    Add ScopeModel Constructor for Config (#9314)
---
 .../org/apache/dubbo/config/AbstractInterfaceConfig.java |  7 +++++++
 .../org/apache/dubbo/config/AbstractMethodConfig.java    |  4 ++++
 .../org/apache/dubbo/config/AbstractReferenceConfig.java |  8 ++++++++
 .../org/apache/dubbo/config/AbstractServiceConfig.java   |  8 ++++++++
 .../java/org/apache/dubbo/config/ApplicationConfig.java  |  4 ++++
 .../java/org/apache/dubbo/config/ConfigCenterConfig.java |  5 +++++
 .../java/org/apache/dubbo/config/ConsumerConfig.java     |  9 +++++++++
 .../org/apache/dubbo/config/MetadataReportConfig.java    | 10 ++++++++++
 .../main/java/org/apache/dubbo/config/MethodConfig.java  |  5 +++++
 .../main/java/org/apache/dubbo/config/MetricsConfig.java |  6 +++++-
 .../main/java/org/apache/dubbo/config/ModuleConfig.java  |  9 +++++++++
 .../main/java/org/apache/dubbo/config/MonitorConfig.java | 10 ++++++++++
 .../java/org/apache/dubbo/config/ProtocolConfig.java     | 16 ++++++++++++++++
 .../java/org/apache/dubbo/config/ProviderConfig.java     |  8 ++++++++
 .../org/apache/dubbo/config/ReferenceConfigBase.java     | 15 +++++++++++++++
 .../java/org/apache/dubbo/config/RegistryConfig.java     | 16 ++++++++++++++++
 .../java/org/apache/dubbo/config/ServiceConfigBase.java  | 16 +++++++++++++++-
 .../src/main/java/org/apache/dubbo/config/SslConfig.java |  8 ++++++++
 .../java/org/apache/dubbo/config/ReferenceConfig.java    |  9 +++++++++
 .../main/java/org/apache/dubbo/config/ServiceConfig.java |  9 +++++++++
 .../org/apache/dubbo/config/spring/ConfigCenterBean.java |  9 +++++++++
 .../java/org/apache/dubbo/config/spring/ServiceBean.java | 11 +++++++++++
 22 files changed, 200 insertions(+), 2 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 6f32849..0cb2072 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -31,6 +31,7 @@ import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.context.ConfigManager;
 import org.apache.dubbo.config.support.Parameter;
 import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ModuleModel;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ScopeModelUtil;
 import org.apache.dubbo.rpc.model.ServiceMetadata;
@@ -189,6 +190,12 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
 
     private  Boolean auth;
 
+    public AbstractInterfaceConfig() {
+    }
+
+    public AbstractInterfaceConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
 
     /**
      * The url of the reference service
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 825c00a..aef37f4 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
@@ -103,6 +103,10 @@ public abstract class AbstractMethodConfig extends AbstractConfig {
         super(ApplicationModel.defaultModel().getDefaultModule());
     }
 
+    public AbstractMethodConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     @Override
     public ModuleModel getScopeModel() {
         return (ModuleModel) scopeModel;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
index deb358b..e4463b2 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config;
 
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ModuleModel;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
 
 import static org.apache.dubbo.common.constants.CommonConstants.INVOKER_LISTENER_KEY;
@@ -89,6 +90,13 @@ public abstract class AbstractReferenceConfig extends AbstractInterfaceConfig {
     @Deprecated
     private Boolean referAsync;
 
+    public AbstractReferenceConfig() {
+    }
+
+    public AbstractReferenceConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     @Override
     protected void checkDefault() {
         super.checkDefault();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
index 783f5dd..a4ae276 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config;
 
 import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ModuleModel;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -126,6 +127,13 @@ public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {
     @Deprecated
     private Boolean exportAsync;
 
+    public AbstractServiceConfig() {
+    }
+
+    public AbstractServiceConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     @Override
     protected void checkDefault() {
         super.checkDefault();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
index fd92114..454b76d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
@@ -198,6 +198,10 @@ public class ApplicationConfig extends AbstractConfig {
     public ApplicationConfig() {
     }
 
+    public ApplicationConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     public ApplicationConfig(String name) {
         setName(name);
     }
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 739a462..d5634ee 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
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.common.utils.UrlUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -114,6 +115,10 @@ public class ConfigCenterConfig extends AbstractConfig {
     public ConfigCenterConfig() {
     }
 
+    public ConfigCenterConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     @Override
     protected void checkDefault() {
         super.checkDefault();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ConsumerConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ConsumerConfig.java
index f2ebc93..8f6e278 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ConsumerConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ConsumerConfig.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config;
 
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ModuleModel;
 
 import static org.apache.dubbo.common.constants.CommonConstants.REFER_BACKGROUND_KEY;
 import static org.apache.dubbo.common.constants.CommonConstants.REFER_THREAD_NUM_KEY;
@@ -82,6 +83,14 @@ public class ConsumerConfig extends AbstractReferenceConfig {
      */
     private Boolean referBackground;
 
+
+    public ConsumerConfig() {
+    }
+
+    public ConsumerConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     @Override
     public void setTimeout(Integer timeout) {
         super.setTimeout(timeout);
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 65f560e..50cb371 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
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.url.component.ServiceConfigURL;
 import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -114,10 +115,19 @@ public class MetadataReportConfig extends AbstractConfig {
     public MetadataReportConfig() {
     }
 
+    public MetadataReportConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     public MetadataReportConfig(String address) {
         setAddress(address);
     }
 
+    public MetadataReportConfig(ApplicationModel applicationModel, String address) {
+        super(applicationModel);
+        setAddress(address);
+    }
+
     public URL toUrl() throws IllegalArgumentException {
         String address = this.getAddress();
         if (isEmpty(address)) {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/MethodConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/MethodConfig.java
index 1318e7f..d4336b0 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MethodConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MethodConfig.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.annotation.Method;
 import org.apache.dubbo.config.support.Parameter;
 import org.apache.dubbo.rpc.model.AsyncMethodInfo;
+import org.apache.dubbo.rpc.model.ModuleModel;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -137,6 +138,10 @@ public class MethodConfig extends AbstractMethodConfig {
     public MethodConfig() {
     }
 
+    public MethodConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     /**
      * TODO remove this construct, the callback method processing logic needs to rely on Spring context
      */
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
index f9a3c75..ea8ca77 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.utils.UrlUtils;
 import org.apache.dubbo.config.nested.AggregationConfig;
 import org.apache.dubbo.config.nested.PrometheusConfig;
 import org.apache.dubbo.config.support.Nested;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -58,7 +59,10 @@ public class MetricsConfig extends AbstractConfig {
     private AggregationConfig aggregation;
 
     public MetricsConfig() {
-        super();
+    }
+
+    public MetricsConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
     }
 
     public URL toUrl() {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ModuleConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ModuleConfig.java
index a5e36a2..2bd0765 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ModuleConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ModuleConfig.java
@@ -96,11 +96,20 @@ public class ModuleConfig extends AbstractConfig {
         super(ApplicationModel.defaultModel().getDefaultModule());
     }
 
+    public ModuleConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     public ModuleConfig(String name) {
         this();
         setName(name);
     }
 
+    public ModuleConfig(ModuleModel moduleModel, String name) {
+        this(moduleModel);
+        setName(name);
+    }
+
     @Override
     protected void checkDefault() {
         super.checkDefault();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/MonitorConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/MonitorConfig.java
index 5892c27..196e09a 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MonitorConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MonitorConfig.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.config;
 import org.apache.dubbo.common.constants.RegistryConstants;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.Map;
 
@@ -66,10 +67,19 @@ public class MonitorConfig extends AbstractConfig {
     public MonitorConfig() {
     }
 
+    public MonitorConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     public MonitorConfig(String address) {
         this.address = address;
     }
 
+    public MonitorConfig(ApplicationModel applicationModel, String address) {
+        super(applicationModel);
+        this.address = address;
+    }
+
     @Parameter(excluded = true)
     public String getAddress() {
         return address;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
index e74e210..d7c5369 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config;
 
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.Map;
 
@@ -202,15 +203,30 @@ public class ProtocolConfig extends AbstractConfig {
     public ProtocolConfig() {
     }
 
+    public ProtocolConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     public ProtocolConfig(String name) {
         setName(name);
     }
 
+    public ProtocolConfig(ApplicationModel applicationModel, String name) {
+        super(applicationModel);
+        setName(name);
+    }
+
     public ProtocolConfig(String name, int port) {
         setName(name);
         setPort(port);
     }
 
+    public ProtocolConfig(ApplicationModel applicationModel, String name, int port) {
+        super(applicationModel);
+        setName(name);
+        setPort(port);
+    }
+
     @Override
     protected void checkDefault() {
         super.checkDefault();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ProviderConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ProviderConfig.java
index 16236dd..03ce552 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ProviderConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ProviderConfig.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.config;
 
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ModuleModel;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -170,6 +171,13 @@ public class ProviderConfig extends AbstractServiceConfig {
      */
     private Boolean exportBackground;
 
+    public ProviderConfig() {
+    }
+
+    public ProviderConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     @Deprecated
     public void setProtocol(String protocol) {
         this.protocols = new ArrayList<>(Arrays.asList(new ProtocolConfig(protocol)));
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 febbb55..d9ccf0f 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,6 +22,7 @@ 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.ModuleModel;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ServiceMetadata;
 import org.apache.dubbo.rpc.service.GenericService;
@@ -78,6 +79,12 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
     }
 
+    public ReferenceConfigBase(ModuleModel moduleModel) {
+        super(moduleModel);
+        serviceMetadata = new ServiceMetadata();
+        serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
+    }
+
     public ReferenceConfigBase(Reference reference) {
         serviceMetadata = new ServiceMetadata();
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
@@ -85,6 +92,14 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
         setMethods(MethodConfig.constructMethodConfig(reference.methods()));
     }
 
+    public ReferenceConfigBase(ModuleModel moduleModel, Reference reference) {
+        super(moduleModel);
+        serviceMetadata = new ServiceMetadata();
+        serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
+        appendAnnotation(Reference.class, reference);
+        setMethods(MethodConfig.constructMethodConfig(reference.methods()));
+    }
+
     public boolean shouldCheck() {
         checkDefault();
         Boolean shouldCheck = isCheck();
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 bce1db6..137ab0a 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
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.Map;
 
@@ -186,15 +187,30 @@ public class RegistryConfig extends AbstractConfig {
     public RegistryConfig() {
     }
 
+    public RegistryConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     public RegistryConfig(String address) {
         setAddress(address);
     }
 
+    public RegistryConfig(ApplicationModel applicationModel, String address) {
+        super(applicationModel);
+        setAddress(address);
+    }
+
     public RegistryConfig(String address, String protocol) {
         setAddress(address);
         setProtocol(protocol);
     }
 
+    public RegistryConfig(ApplicationModel applicationModel, String address, String protocol) {
+        super(applicationModel);
+        setAddress(address);
+        setProtocol(protocol);
+    }
+
     @Override
     @Parameter(key = REGISTRY_CLUSTER_KEY)
     public String getId() {
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 1ba6082..af84c37 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,6 +21,7 @@ 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.ModuleModel;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ServiceMetadata;
 import org.apache.dubbo.rpc.service.GenericService;
@@ -80,12 +81,17 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
     protected volatile String generic;
 
 
-
     public ServiceConfigBase() {
         serviceMetadata = new ServiceMetadata();
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
     }
 
+    public ServiceConfigBase(ModuleModel moduleModel) {
+        super(moduleModel);
+        serviceMetadata = new ServiceMetadata();
+        serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
+    }
+
     public ServiceConfigBase(Service service) {
         serviceMetadata = new ServiceMetadata();
         serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
@@ -93,6 +99,14 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
         setMethods(MethodConfig.constructMethodConfig(service.methods()));
     }
 
+    public ServiceConfigBase(ModuleModel moduleModel, Service service) {
+        super(moduleModel);
+        serviceMetadata = new ServiceMetadata();
+        serviceMetadata.addAttribute("ORIGIN_CONFIG", this);
+        appendAnnotation(Service.class, service);
+        setMethods(MethodConfig.constructMethodConfig(service.methods()));
+    }
+
     @Deprecated
     private static List<ProtocolConfig> convertProviderToProtocol(List<ProviderConfig> providers) {
         if (CollectionUtils.isEmpty(providers)) {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/SslConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/SslConfig.java
index 83f8659..5bd021e 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/SslConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/SslConfig.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.IOUtils;
 import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -48,6 +49,13 @@ public class SslConfig extends AbstractConfig {
     private InputStream clientPrivateKeyPathStream;
     private InputStream clientTrustCertCollectionPathStream;
 
+    public SslConfig() {
+    }
+
+    public SslConfig(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     @Parameter(key = "server-key-cert-chain-path")
     public String getServerKeyCertChainPath() {
         return serverKeyCertChainPath;
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 51079e4..fac5b7c 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -41,6 +41,7 @@ import org.apache.dubbo.rpc.cluster.support.ClusterUtils;
 import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster;
 import org.apache.dubbo.rpc.model.AsyncMethodInfo;
 import org.apache.dubbo.rpc.model.ConsumerModel;
+import org.apache.dubbo.rpc.model.ModuleModel;
 import org.apache.dubbo.rpc.model.ModuleServiceRepository;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ServiceDescriptor;
@@ -144,10 +145,18 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
         super();
     }
 
+    public ReferenceConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     public ReferenceConfig(Reference reference) {
         super(reference);
     }
 
+    public ReferenceConfig(ModuleModel moduleModel, Reference reference) {
+        super(moduleModel, reference);
+    }
+
     @Override
     protected void postProcessAfterScopeModelChanged(ScopeModel oldScopeModel, ScopeModel newScopeModel) {
         super.postProcessAfterScopeModelChanged(oldScopeModel, newScopeModel);
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index f247614..6cbc9c1 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -41,6 +41,7 @@ import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.Protocol;
 import org.apache.dubbo.rpc.ProxyFactory;
 import org.apache.dubbo.rpc.cluster.ConfiguratorFactory;
+import org.apache.dubbo.rpc.model.ModuleModel;
 import org.apache.dubbo.rpc.model.ModuleServiceRepository;
 import org.apache.dubbo.rpc.model.ProviderModel;
 import org.apache.dubbo.rpc.model.ScopeModel;
@@ -138,10 +139,18 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
     public ServiceConfig() {
     }
 
+    public ServiceConfig(ModuleModel moduleModel) {
+        super(moduleModel);
+    }
+
     public ServiceConfig(Service service) {
         super(service);
     }
 
+    public ServiceConfig(ModuleModel moduleModel, Service service) {
+        super(moduleModel, service);
+    }
+
     @Override
     protected void postProcessAfterScopeModelChanged(ScopeModel oldScopeModel, ScopeModel newScopeModel) {
         super.postProcessAfterScopeModelChanged(oldScopeModel, newScopeModel);
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
index d0f1263..49640ee 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -19,6 +19,8 @@ package org.apache.dubbo.config.spring;
 import org.apache.dubbo.common.config.ConfigurationUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.ConfigCenterConfig;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
@@ -41,6 +43,13 @@ public class ConfigCenterBean extends ConfigCenterConfig implements ApplicationC
 
     private Boolean includeSpringEnv = false;
 
+    public ConfigCenterBean() {
+    }
+
+    public ConfigCenterBean(ApplicationModel applicationModel) {
+        super(applicationModel);
+    }
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index 1905de5..0d209a1 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
 import org.apache.dubbo.config.spring.util.DubboBeanUtils;
 import org.apache.dubbo.config.support.Parameter;
 import org.apache.dubbo.rpc.model.ModuleModel;
+
 import org.springframework.aop.support.AopUtils;
 import org.springframework.beans.factory.BeanNameAware;
 import org.springframework.beans.factory.DisposableBean;
@@ -56,11 +57,21 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
         this.service = null;
     }
 
+    public ServiceBean(ModuleModel moduleModel) {
+        super(moduleModel);
+        this.service = null;
+    }
+
     public ServiceBean(Service service) {
         super(service);
         this.service = service;
     }
 
+    public ServiceBean(ModuleModel moduleModel, Service service) {
+        super(moduleModel, service);
+        this.service = service;
+    }
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;