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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit d9a431d0859a00e60d22351e2d05874074326db8
Author: liubao <bi...@qq.com>
AuthorDate: Sun Oct 8 17:48:46 2023 +0800

    [SCB-2008]remove ConfigUtil methods
---
 .../rest/definition/TestRestOperationMeta.java     |   2 -
 .../filter/inner/RestServerCodecFilterTest.java    |   3 -
 .../rest/locator/TestServicePathManager.java       |   3 +-
 .../org/apache/servicecomb/core/SCBEngine.java     |   4 +-
 .../core/TestConfigurationSpringInitializer.java   |   5 +-
 .../core/TestSCBApplicationListener.java           |   2 -
 .../producer/TestProducerBootListener.java         |  68 +-----
 .../servicecomb/config/apollo/ApolloClient.java    |  38 +--
 .../servicecomb/config/apollo/ApolloConfig.java    |  33 +--
 .../config/apollo/ApolloConfiguration.java         |   6 +
 .../apollo/ApolloDynamicPropertiesSource.java      |  10 +-
 .../config/apollo/ApolloClientTest.java            |   8 +-
 .../config/apollo/ApolloConfigTest.java            |  44 ----
 .../config/nacos/NacosDynamicPropertiesSource.java |   3 +-
 .../org/apache/servicecomb/config/ConfigUtil.java  | 255 ---------------------
 .../spi/ConfigCenterConfigurationSource.java       |  35 ---
 .../spi/ConfigCenterConfigurationSourceLoader.java |  42 ----
 .../config/MapBasedConfigurationSource.java        | 103 ---------
 .../priority/TestPriorityPropertyManager.java      |   7 -
 ...comb.config.spi.ConfigCenterConfigurationSource |  18 --
 .../registry/discovery/TestDiscoveryTree.java      |   3 +-
 .../servicecomb/loadbalance/TestConfiguration.java |  23 --
 .../loadbalance/TestLoadBalanceFilter.java         |   2 -
 .../monitor/DefaultMonitorDataPublisher.java       |   9 +-
 .../dashboard/monitor/TransportUtils.java          |  51 +++--
 25 files changed, 87 insertions(+), 690 deletions(-)

diff --git 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
index 86662b3a2..b9fc9372a 100644
--- 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
+++ 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
@@ -27,7 +27,6 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.servicecomb.common.rest.RestEngineSchemaListener;
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.core.BootListener;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
@@ -167,7 +166,6 @@ public class TestRestOperationMeta {
 
   @BeforeAll
   public static void classSetup() {
-    ConfigUtil.installDynamicConfig();
     scbEngine = SCBBootstrap.createSCBEngineForTest();
     ExecutorManager executorManager = Mockito.mock(ExecutorManager.class);
     TransportManager transportManager = Mockito.mock(TransportManager.class);
diff --git 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java
 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java
index 8ac941cd8..8da1fa350 100644
--- 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java
+++ 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java
@@ -29,7 +29,6 @@ import java.util.concurrent.ExecutionException;
 import org.apache.servicecomb.common.rest.HttpTransportContext;
 import org.apache.servicecomb.common.rest.RestConst;
 import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.SCBEngine;
@@ -98,8 +97,6 @@ public class RestServerCodecFilterTest {
 
   @BeforeAll
   public static void beforeClass() {
-    ConfigUtil.installDynamicConfig();
-
     engine = SCBBootstrap.createSCBEngineForTest();
     Environment environment = Mockito.mock(Environment.class);
     engine.setEnvironment(environment);
diff --git 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java
 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java
index f7843353e..47b3ecb53 100644
--- 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java
+++ 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java
@@ -24,7 +24,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.servicecomb.common.rest.RestEngineSchemaListener;
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.core.BootListener;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
@@ -55,7 +54,7 @@ public class TestServicePathManager {
 
   @BeforeEach
   public void setUp() {
-    ConfigUtil.installDynamicConfig();
+
   }
 
   @AfterEach
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java 
b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index 4b04addf2..d74399002 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -25,7 +25,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.config.MicroserviceProperties;
 import org.apache.servicecomb.config.priority.PriorityPropertyManager;
 import org.apache.servicecomb.core.BootListener.BootEvent;
@@ -463,8 +462,7 @@ public class SCBEngine {
       LOGGER.error("wait all invocation finished interrupted", e);
     }
 
-    //Step 5: destroy config center source
-    ConfigUtil.destroyConfigCenterConfigurationSource();
+    //Step 5: destroy config source
     // only be null for some test cases
     if (priorityPropertyManager != null) {
       priorityPropertyManager.close();
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java
 
b/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java
index a5fbd6f2c..27b38f601 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java
@@ -21,7 +21,6 @@ import java.util.Map;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.config.Configurator;
-import org.apache.servicecomb.config.ConfigUtil;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -40,14 +39,12 @@ public class TestConfigurationSpringInitializer {
   public void beforeTest() {
     Configurator.setRootLevel(Level.OFF);
 
-    ConfigUtil.clearExtraConfig();
-
     Configurator.setRootLevel(Level.INFO);
   }
 
   @AfterEach
   public void afterTest() {
-    ConfigUtil.clearExtraConfig();
+
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java
 
b/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java
index 37eebd201..c6aad1f9d 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.core;
 import static 
org.apache.servicecomb.core.SCBEngine.CFG_KEY_TURN_DOWN_STATUS_WAIT_SEC;
 import static 
org.apache.servicecomb.core.SCBEngine.DEFAULT_TURN_DOWN_STATUS_WAIT_SEC;
 
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
@@ -32,7 +31,6 @@ import org.springframework.core.env.Environment;
 public class TestSCBApplicationListener {
   @BeforeEach
   public void before() {
-    ConfigUtil.installDynamicConfig();
   }
 
   @AfterAll
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java
 
b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java
index edecc74ef..e327759ef 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java
@@ -17,26 +17,18 @@
 
 package org.apache.servicecomb.core.provider.producer;
 
-import java.io.Closeable;
 import java.util.Arrays;
 import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.servicecomb.core.BootListener.BootEvent;
 import org.apache.servicecomb.core.BootListener.EventType;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.core.executor.GroupExecutor;
 import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector;
-import org.junit.Test;
-
-import mockit.Expectations;
-import mockit.Mock;
-import mockit.MockUp;
-import mockit.Mocked;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
 
 public class TestProducerBootListener {
   ProducerBootListener producerBootListener = new ProducerBootListener();
@@ -51,57 +43,15 @@ public class TestProducerBootListener {
   }
 
   @Test
-  public void onBootEvent_close(@Mocked SCBEngine scbEngine, @Mocked 
MicroserviceMeta microserviceMeta,
-      @Mocked OperationMeta op1,
-      @Mocked OperationMeta op2, @Mocked GroupExecutor closeable) {
-    AtomicInteger count = new AtomicInteger();
-    ExecutorService executorService = new MockUp<ExecutorService>() {
-      @Mock
-      void shutdown() {
-        count.incrementAndGet();
-      }
-    }.getMockInstance();
-    new MockUp<Closeable>(closeable) {
-      @Mock
-      void close() {
-        count.incrementAndGet();
-      }
-    };
-    new Expectations() {
-      {
-        scbEngine.getProducerMicroserviceMeta();
-        result = microserviceMeta;
-        microserviceMeta.getOperations();
-        result = Arrays.asList(op1, op2);
-        op1.getExecutor();
-        result = executorService;
-        op2.getExecutor();
-        result = closeable;
-      }
-    };
-    BootEvent event = new BootEvent();
-    event.setScbEngine(scbEngine);
-    event.setEventType(EventType.AFTER_CLOSE);
-
-    producerBootListener.onBootEvent(event);
+  public void onBootEvent_close_unknown() {
+    SCBEngine scbEngine = Mockito.mock(SCBEngine.class);
+    MicroserviceMeta microserviceMeta = Mockito.mock(MicroserviceMeta.class);
+    OperationMeta op = Mockito.mock(OperationMeta.class);
 
-    Assertions.assertEquals(2, count.get());
-  }
-
-  @Test
-  public void onBootEvent_close_unknown(@Mocked SCBEngine scbEngine, @Mocked 
MicroserviceMeta microserviceMeta,
-      @Mocked OperationMeta op1) {
     Executor executor = new UnCloseableExecutor();
-    new Expectations() {
-      {
-        scbEngine.getProducerMicroserviceMeta();
-        result = microserviceMeta;
-        microserviceMeta.getOperations();
-        result = Arrays.asList(op1);
-        op1.getExecutor();
-        result = executor;
-      }
-    };
+    
Mockito.when(scbEngine.getProducerMicroserviceMeta()).thenReturn(microserviceMeta);
+    
Mockito.when(microserviceMeta.getOperations()).thenReturn(Arrays.asList(op));
+    Mockito.when(op.getExecutor()).thenReturn(executor);
 
     try (LogCollector logCollector = new LogCollector()) {
       BootEvent event = new BootEvent();
diff --git 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java
 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java
index acd4a4dff..4fe0cc92b 100644
--- 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java
+++ 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java
@@ -29,7 +29,6 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-import com.google.common.annotations.VisibleForTesting;
 import 
org.apache.servicecomb.config.apollo.ApolloDynamicPropertiesSource.UpdateHandler;
 import org.apache.servicecomb.foundation.common.utils.JsonUtils;
 import org.slf4j.Logger;
@@ -41,6 +40,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.RestTemplate;
 
 import com.fasterxml.jackson.core.type.TypeReference;
+import com.google.common.annotations.VisibleForTesting;
 
 import io.netty.handler.codec.http.HttpResponseStatus;
 
@@ -48,34 +48,19 @@ public class ApolloClient {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ApolloClient.class);
 
-  private static final ApolloConfig APOLLO_CONFIG = ApolloConfig.INSTANCE;
-
   private static final Map<String, Object> originalConfigMap = new 
ConcurrentHashMap<>();
 
   private static final ScheduledExecutorService EXECUTOR = 
Executors.newScheduledThreadPool(1);
 
-  private final int refreshInterval = APOLLO_CONFIG.getRefreshInterval();
-
-  private final int firstRefreshInterval = 
APOLLO_CONFIG.getFirstRefreshInterval();
-
-  private final String serviceUri = APOLLO_CONFIG.getServerUri();
-
-  private final String serviceName = APOLLO_CONFIG.getServiceName();
-
-  private final String token = APOLLO_CONFIG.getToken();
-
-  private final String env = APOLLO_CONFIG.getEnv();
-
-  private final String clusters = APOLLO_CONFIG.getServerClusters();
-
-  private final String namespace = APOLLO_CONFIG.getNamespace();
+  private final ApolloConfig apolloConfig;
 
   private final UpdateHandler updateHandler;
 
   private static RestTemplate rest = new RestTemplate();
 
-  public ApolloClient(UpdateHandler updateHandler) {
+  public ApolloClient(UpdateHandler updateHandler, ApolloConfig apolloConfig) {
     this.updateHandler = updateHandler;
+    this.apolloConfig = apolloConfig;
   }
 
   @VisibleForTesting
@@ -89,8 +74,9 @@ public class ApolloClient {
   }
 
   public void refreshApolloConfig() {
-    EXECUTOR
-        .scheduleWithFixedDelay(new ConfigRefresh(serviceUri), 
firstRefreshInterval, refreshInterval, TimeUnit.SECONDS);
+    EXECUTOR.scheduleWithFixedDelay(new 
ConfigRefresh(apolloConfig.getServerUri()),
+        apolloConfig.getFirstRefreshInterval(),
+        apolloConfig.getRefreshInterval(), TimeUnit.SECONDS);
   }
 
   class ConfigRefresh implements Runnable {
@@ -113,7 +99,7 @@ public class ApolloClient {
     void refreshConfig() {
       HttpHeaders headers = new HttpHeaders();
       headers.add("Content-Type", "application/json;charset=UTF-8");
-      headers.add("Authorization", token);
+      headers.add("Authorization", apolloConfig.getToken());
       HttpEntity<String> entity = new HttpEntity<>(headers);
       ResponseEntity<String> exchange = rest.exchange(composeAPI(), 
HttpMethod.GET, entity, String.class);
       if (HttpResponseStatus.OK.code() == exchange.getStatusCode().value()) {
@@ -133,10 +119,10 @@ public class ApolloClient {
     }
 
     private String composeAPI() {
-      String api = serviceUri + "/openapi/v1/envs/" + env +
-          "/apps/" + serviceName +
-          "/clusters/" + clusters +
-          "/namespaces/" + namespace +
+      String api = serviceUri + "/openapi/v1/envs/" + apolloConfig.getEnv() +
+          "/apps/" + apolloConfig.getServiceName() +
+          "/clusters/" + apolloConfig.getServerClusters() +
+          "/namespaces/" + apolloConfig.getNamespace() +
           "/releases/latest";
       return api;
     }
diff --git 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java
 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java
index 605912e36..97509b9ee 100644
--- 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java
+++ 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java
@@ -17,13 +17,9 @@
 
 package org.apache.servicecomb.config.apollo;
 
-import org.apache.commons.configuration.Configuration;
+import org.springframework.core.env.Environment;
 
 public class ApolloConfig {
-  public static final ApolloConfig INSTANCE = new ApolloConfig();
-
-  private static Configuration finalConfig;
-
   private static final String SERVER_URL_KEY = "apollo.config.serverUri";
 
   private static final String SERVER_NAMESPACE = "apollo.config.namespace";
@@ -44,46 +40,41 @@ public class ApolloConfig {
 
   private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0;
 
-  private ApolloConfig() {
-  }
-
-  public static void setConcurrentCompositeConfiguration(Configuration config) 
{
-    finalConfig = config;
-  }
+  private final Environment environment;
 
-  public Configuration getConcurrentCompositeConfiguration() {
-    return finalConfig;
+  public ApolloConfig(Environment environment) {
+    this.environment = environment;
   }
 
   public String getServiceName() {
-    return finalConfig.getString(APOLLO_SERVICE_NAME);
+    return environment.getProperty(APOLLO_SERVICE_NAME);
   }
 
   public String getServerUri() {
-    return finalConfig.getString(SERVER_URL_KEY);
+    return environment.getProperty(SERVER_URL_KEY);
   }
 
   public String getToken() {
-    return finalConfig.getString(TOKEN);
+    return environment.getProperty(TOKEN);
   }
 
   public String getEnv() {
-    return finalConfig.getString(SERVER_ENV);
+    return environment.getProperty(SERVER_ENV);
   }
 
   public String getNamespace() {
-    return finalConfig.getString(SERVER_NAMESPACE);
+    return environment.getProperty(SERVER_NAMESPACE);
   }
 
   public String getServerClusters() {
-    return finalConfig.getString(SERVER_CLUSTERS);
+    return environment.getProperty(SERVER_CLUSTERS);
   }
 
   public int getRefreshInterval() {
-    return finalConfig.getInt(REFRESH_INTERVAL, DEFAULT_REFRESH_INTERVAL);
+    return environment.getProperty(REFRESH_INTERVAL, int.class, 
DEFAULT_REFRESH_INTERVAL);
   }
 
   public int getFirstRefreshInterval() {
-    return finalConfig.getInt(FIRST_REFRESH_INTERVAL, 
DEFAULT_FIRST_REFRESH_INTERVAL);
+    return environment.getProperty(FIRST_REFRESH_INTERVAL, int.class, 
DEFAULT_FIRST_REFRESH_INTERVAL);
   }
 }
diff --git 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
index 26dd7a2ee..ac500eafc 100644
--- 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
+++ 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.config.apollo;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
 
 @Configuration
 public class ApolloConfiguration {
@@ -25,4 +26,9 @@ public class ApolloConfiguration {
   public ApolloDynamicPropertiesSource apolloDynamicPropertiesSource() {
     return new ApolloDynamicPropertiesSource();
   }
+
+  @Bean
+  public ApolloConfig apolloConfig(Environment environment) {
+    return new ApolloConfig(environment);
+  }
 }
diff --git 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
index 01dc1a434..56dd7ed39 100644
--- 
a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
+++ 
b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
@@ -27,6 +27,7 @@ import org.apache.servicecomb.config.ConfigMapping;
 import org.apache.servicecomb.config.DynamicPropertiesSource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.EnumerablePropertySource;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.MapPropertySource;
@@ -41,13 +42,20 @@ public class ApolloDynamicPropertiesSource implements 
DynamicPropertiesSource<Ma
   private final ApolloDynamicPropertiesSource.UpdateHandler updateHandler =
       new ApolloDynamicPropertiesSource.UpdateHandler();
 
+  private ApolloConfig apolloConfig;
+
+  @Autowired
+  public void setApolloConfig(ApolloConfig apolloConfig) {
+    this.apolloConfig = apolloConfig;
+  }
+
   @Override
   public int getOrder() {
     return 300;
   }
 
   private void init() {
-    ApolloClient apolloClient = new ApolloClient(updateHandler);
+    ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig);
     apolloClient.refreshApolloConfig();
   }
 
diff --git 
a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java
 
b/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java
index c284a1fbf..77a074e4f 100644
--- 
a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java
+++ 
b/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java
@@ -38,12 +38,11 @@ public class ApolloClientTest {
   @BeforeAll
   public static void setUpClass() {
 
-    
ApolloConfig.setConcurrentCompositeConfiguration(ConfigUtil.createLocalConfig());
   }
 
   @Test
   public void refreshApolloConfig() {
-    ApolloConfig apolloConfig = ApolloConfig.INSTANCE;
+    ApolloConfig apolloConfig = Mockito.mock(ApolloConfig.class);
     RestTemplate rest = Mockito.mock(RestTemplate.class);
     ApolloClient.setRest(rest);
 
@@ -56,7 +55,7 @@ public class ApolloClientTest {
         ArgumentMatchers.<Class<String>>any())).thenReturn(responseEntity);
     ApolloDynamicPropertiesSource impl = new ApolloDynamicPropertiesSource();
     UpdateHandler updateHandler = impl.new UpdateHandler();
-    ApolloClient apolloClient = new ApolloClient(updateHandler);
+    ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig);
     ConfigRefresh cr = apolloClient.new 
ConfigRefresh(apolloConfig.getServerUri());
     cr.run();
 
@@ -65,13 +64,14 @@ public class ApolloClientTest {
 
   @Test
   public void testCompareChangedConfig() {
+    ApolloConfig apolloConfig = Mockito.mock(ApolloConfig.class);
     boolean status = true;
     Map<String, Object> before = new HashMap<>();
     Map<String, Object> after = new HashMap<>();
 
     ApolloDynamicPropertiesSource impl = new ApolloDynamicPropertiesSource();
     UpdateHandler updateHandler = impl.new UpdateHandler();
-    ApolloClient apolloClient = new ApolloClient(updateHandler);
+    ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig);
 
     ConfigRefresh cr = apolloClient.new ConfigRefresh("");
 
diff --git 
a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloConfigTest.java
 
b/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloConfigTest.java
deleted file mode 100644
index 01a550609..000000000
--- 
a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloConfigTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.config.apollo;
-
-import org.apache.servicecomb.config.ConfigUtil;
-import org.apache.servicecomb.config.apollo.ApolloConfig;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-public class ApolloConfigTest {
-  @BeforeAll
-  public static void setUpClass() {
-    
ApolloConfig.setConcurrentCompositeConfiguration(ConfigUtil.createLocalConfig());
-  }
-
-  @Test
-  public void getServiceName() {
-    ApolloConfig instance = ApolloConfig.INSTANCE;
-    Assertions.assertEquals("apollo-test", instance.getServiceName());
-    Assertions.assertEquals("http://127.0.0.1:8070";, instance.getServerUri());
-    Assertions.assertEquals("DEV", instance.getEnv());
-    Assertions.assertEquals("test-cluster", instance.getServerClusters());
-    Assertions.assertEquals("application", instance.getNamespace());
-    Assertions.assertEquals("xxx", instance.getToken());
-    Assertions.assertEquals(30, instance.getRefreshInterval());
-    Assertions.assertEquals(0, instance.getFirstRefreshInterval());
-  }
-}
diff --git 
a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
 
b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
index 134a4e035..4b39760a9 100644
--- 
a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
+++ 
b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
@@ -27,7 +27,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.servicecomb.config.ConfigMapping;
 import org.apache.servicecomb.config.DynamicPropertiesSource;
-import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.env.EnumerablePropertySource;
@@ -40,7 +39,7 @@ import com.netflix.config.WatchedUpdateListener;
 public class NacosDynamicPropertiesSource implements 
DynamicPropertiesSource<Map<String, Object>> {
   public static final String SOURCE_NAME = "kie";
 
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(ConfigCenterConfigurationSource.class);
+  private static final Logger LOGGER = 
LoggerFactory.getLogger(NacosDynamicPropertiesSource.class);
 
   private final Map<String, Object> valueCache = new ConcurrentHashMap<>();
 
diff --git 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
index 11c002c3e..4259badfc 100644
--- 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
+++ 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
@@ -17,279 +17,24 @@
 
 package org.apache.servicecomb.config;
 
-import static 
org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_KEY_SPLITER;
-
-import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.stream.Collectors;
-
-import javax.annotation.Nonnull;
 
-import org.apache.commons.configuration.AbstractConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.EnvironmentConfiguration;
 import org.apache.commons.configuration.PropertyConverter;
-import org.apache.commons.configuration.SystemConfiguration;
-import org.apache.commons.lang.reflect.FieldUtils;
-import org.apache.commons.lang3.StringUtils;
-import 
org.apache.servicecomb.config.archaius.scheduler.NeverStartPollingScheduler;
-import org.apache.servicecomb.config.archaius.sources.ConfigModel;
-import org.apache.servicecomb.config.archaius.sources.MicroserviceConfigLoader;
-import 
org.apache.servicecomb.config.archaius.sources.MicroserviceConfigurationSource;
-import org.apache.servicecomb.config.event.DynamicConfigurationChangedEvent;
-import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource;
-import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSourceLoader;
-import org.apache.servicecomb.foundation.common.event.EventManager;
-import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.core.env.EnumerablePropertySource;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.PropertySource;
 
-import com.netflix.config.ConcurrentCompositeConfiguration;
-import com.netflix.config.ConcurrentMapConfiguration;
-import com.netflix.config.ConfigurationManager;
-import com.netflix.config.DynamicProperty;
-import com.netflix.config.DynamicPropertyFactory;
-import com.netflix.config.WatchedUpdateListener;
-import com.netflix.config.WatchedUpdateResult;
-
 public final class ConfigUtil {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(ConfigUtil.class);
-
-  private static final String IS_PRINT_URL = "servicecomb.config.log.verbose";
-
-  private static Map<String, Object> localConfig = new HashMap<>();
-
-  /**
-   * <p>The configurations not read by ServiceComb.</p>
-   * <p>
-   * For example, this map can store the configurations read by SpringBoot 
from application.properties,
-   * If users write the configurations of ServiceComb into application.yml 
instead of microservice.yaml,
-   * this can help {@link ConfigUtil} load config correctly.
-   * </p>
-   */
-  private static final Map<String, Map<String, Object>> EXTRA_CONFIG_MAP = new 
LinkedHashMap<>();
-
   private ConfigUtil() {
   }
 
-  public static void setConfigs(Map<String, Object> config) {
-    localConfig = config;
-  }
-
-  public static void addConfig(String key, Object value) {
-    localConfig.put(key, value);
-  }
-
-  public static Object getProperty(String key) {
-    AbstractConfiguration config = ConfigurationManager.getConfigInstance();
-    return getProperty(config, key);
-  }
-
-  public static Object getProperty(Object config, String key) {
-    if (config instanceof Configuration) {
-      Configuration configuration = (Configuration) config;
-      return configuration.getProperty(key);
-    }
-    return null;
-  }
-
-  /**
-   * get comma separated list values from yaml string
-   */
-  public static List<String> getStringList(@Nonnull Configuration config, 
@Nonnull String key) {
-    return parseArrayValue(config.getString(key)).stream()
-        .map(v -> Objects.toString(v, null))
-        .collect(Collectors.toList());
-  }
-
   public static List<String> parseArrayValue(String value) {
     return PropertyConverter.split(value, ',', true);
   }
 
-  public static ConcurrentCompositeConfiguration createLocalConfig() {
-    MicroserviceConfigLoader loader = new MicroserviceConfigLoader();
-    loader.loadAndSort();
-    if (localConfig.size() > 0) {
-      ConfigModel model = new ConfigModel();
-      model.setConfig(localConfig);
-      loader.getConfigModels().add(model);
-    }
-
-    boolean isPrintUrl = DynamicPropertyFactory.getInstance()
-        .getBooleanProperty(IS_PRINT_URL, true).get();
-    if (isPrintUrl) {
-      LOGGER.info("create local config from paths=[{}]", 
StringUtils.join(loader.getConfigModels(), ","));
-    }
-
-    ConcurrentCompositeConfiguration config = 
ConfigUtil.createLocalConfig(loader.getConfigModels());
-    return config;
-  }
-
-  private static ConcurrentCompositeConfiguration 
createLocalConfig(List<ConfigModel> configModelList) {
-    ConcurrentCompositeConfiguration config = new 
ConcurrentCompositeConfiguration();
-
-    duplicateCseConfigToServicecomb(config,
-        new ConcurrentMapConfigurationExt(new SystemConfiguration()),
-        "configFromSystem");
-    duplicateCseConfigToServicecomb(config,
-        convertEnvVariable(new ConcurrentMapConfigurationExt(new 
EnvironmentConfiguration())),
-        "configFromEnvironment");
-    // If there is extra configurations, add it into config.
-    EXTRA_CONFIG_MAP.entrySet()
-        .stream()
-        .filter(mapEntry -> !mapEntry.getValue().isEmpty())
-        .forEachOrdered(configMapEntry -> 
duplicateCseConfigToServicecomb(config,
-            new ConcurrentMapConfigurationExt(configMapEntry.getValue()),
-            configMapEntry.getKey()));
-    // we have already copy the cse config to the serviceComb config when we 
load the config from local yaml files
-    // hence, we do not need duplicate copy it.
-    config.addConfiguration(new DynamicConfigurationExt(
-            new MicroserviceConfigurationSource(configModelList), new 
NeverStartPollingScheduler()),
-        "configFromYamlFile");
-    duplicateCseConfigToServicecombAtFront(config,
-        new 
ConcurrentMapConfigurationExt(ConfigMapping.getConvertedMap(config)),
-        "configFromMapping");
-    return config;
-  }
-
-  public static AbstractConfiguration convertEnvVariable(AbstractConfiguration 
source) {
-    Iterator<String> keys = source.getKeys();
-    while (keys.hasNext()) {
-      String key = keys.next();
-      String[] separatedKey = key.split(CONFIG_KEY_SPLITER);
-      if (separatedKey.length == 1) {
-        continue;
-      }
-      String newKey = String.join(".", separatedKey);
-      source.addProperty(newKey, source.getProperty(key));
-    }
-    return source;
-  }
-
-  private static void 
duplicateCseConfigToServicecomb(ConcurrentCompositeConfiguration 
compositeConfiguration,
-      AbstractConfiguration source,
-      String sourceName) {
-
-    compositeConfiguration.addConfiguration(source, sourceName);
-  }
-
-  private static void 
duplicateCseConfigToServicecombAtFront(ConcurrentCompositeConfiguration 
compositeConfiguration,
-      AbstractConfiguration source,
-      String sourceName) {
-
-    compositeConfiguration.addConfigurationAtFront(source, sourceName);
-  }
-
-  private static ConfigCenterConfigurationSource 
createConfigCenterConfigurationSource(
-      Configuration localConfiguration) {
-    ConfigCenterConfigurationSource configCenterConfigurationSource = 
ConfigCenterConfigurationSourceLoader
-        .getConfigCenterConfigurationSource(localConfiguration);
-
-    if (null == configCenterConfigurationSource) {
-      LOGGER.info("none of config center source enabled.");
-      return null;
-    }
-
-    LOGGER.info("use config center source {}", 
configCenterConfigurationSource.getClass().getName());
-    return configCenterConfigurationSource;
-  }
-
-  private static void createDynamicWatchedConfiguration(
-      ConcurrentCompositeConfiguration localConfiguration,
-      ConfigCenterConfigurationSource configCenterConfigurationSource) {
-    ConcurrentMapConfiguration injectConfig = new 
ConcurrentMapConfigurationExt();
-    localConfiguration.addConfigurationAtFront(injectConfig, 
"extraInjectConfig");
-    configCenterConfigurationSource.addUpdateListener(new 
ServiceCombPropertyUpdateListener(injectConfig));
-
-    DynamicWatchedConfigurationExt configFromConfigCenter =
-        new DynamicWatchedConfigurationExt(configCenterConfigurationSource);
-    localConfiguration.addConfigurationAtFront(configFromConfigCenter, 
"configCenterConfig");
-  }
-
-  public static ConfigCenterConfigurationSource installDynamicConfig() {
-    if (ConfigurationManager.isConfigurationInstalled()) {
-      LOGGER.warn("Configuration installed by others, will ignore this 
configuration.");
-      return null;
-    }
-
-    ConcurrentCompositeConfiguration compositeConfig = 
ConfigUtil.createLocalConfig();
-    ConfigCenterConfigurationSource configCenterConfigurationSource =
-        createConfigCenterConfigurationSource(compositeConfig);
-    if (configCenterConfigurationSource != null) {
-      // add listeners
-      createDynamicWatchedConfiguration(compositeConfig, 
configCenterConfigurationSource);
-      // then init data
-      configCenterConfigurationSource.init(compositeConfig);
-    }
-
-    ConfigurationManager.install(compositeConfig);
-
-    return configCenterConfigurationSource;
-  }
-
-  public static void destroyConfigCenterConfigurationSource() {
-    
SPIServiceUtils.getAllService(ConfigCenterConfigurationSource.class).forEach(source
 -> {
-      try {
-        source.destroy();
-      } catch (Throwable e) {
-        LOGGER.error("Failed to destroy {}", source.getClass().getName());
-      }
-    });
-  }
-
-  public static void addExtraConfig(String extraConfigName, Map<String, 
Object> extraConfig) {
-    EXTRA_CONFIG_MAP.put(extraConfigName, extraConfig);
-  }
-
-  public static void clearExtraConfig() {
-    EXTRA_CONFIG_MAP.clear();
-  }
-
-  private static class ServiceCombPropertyUpdateListener implements 
WatchedUpdateListener {
-
-    private final ConcurrentMapConfiguration injectConfig;
-
-    ServiceCombPropertyUpdateListener(ConcurrentMapConfiguration injectConfig) 
{
-      this.injectConfig = injectConfig;
-    }
-
-    @Override
-    public void updateConfiguration(WatchedUpdateResult watchedUpdateResult) {
-      EventManager.post(new 
DynamicConfigurationChangedEvent(watchedUpdateResult));
-    }
-  }
-
-  @SuppressWarnings("unchecked")
-  public static ConcurrentHashMap<String, DynamicProperty> 
getAllDynamicProperties() {
-    try {
-      return (ConcurrentHashMap<String, DynamicProperty>) FieldUtils
-          .readDeclaredStaticField(DynamicProperty.class, "ALL_PROPS", true);
-    } catch (IllegalAccessException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
-  @SuppressWarnings("unchecked")
-  public static CopyOnWriteArraySet<Runnable> getCallbacks(DynamicProperty 
property) {
-    try {
-      return (CopyOnWriteArraySet<Runnable>) 
FieldUtils.readDeclaredField(property, "callbacks", true);
-    } catch (IllegalAccessException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
   public static Set<String> propertiesWithPrefix(Environment environment, 
String prefix) {
     Set<String> result = new HashSet<>();
     for (PropertySource<?> propertySource : ((ConfigurableEnvironment) 
environment).getPropertySources()) {
diff --git 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSource.java
 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSource.java
deleted file mode 100644
index 604e7f8b3..000000000
--- 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSource.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.config.spi;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.servicecomb.foundation.common.utils.SPIOrder;
-
-import com.netflix.config.WatchedConfigurationSource;
-
-public interface ConfigCenterConfigurationSource extends 
WatchedConfigurationSource, SPIOrder {
-  int ORDER_BASE = 100;
-
-  boolean isValidSource(Configuration localConfiguration);
-
-  void init(Configuration localConfiguration);
-
-  default void destroy() {
-
-  }
-}
diff --git 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSourceLoader.java
 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSourceLoader.java
deleted file mode 100644
index 2e5760e36..000000000
--- 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSourceLoader.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.config.spi;
-
-import java.util.List;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-
-public class ConfigCenterConfigurationSourceLoader {
-  private static final List<ConfigCenterConfigurationSource> 
configCenterConfigurationSources =
-      SPIServiceUtils.getSortedService(ConfigCenterConfigurationSource.class);
-
-  public static ConfigCenterConfigurationSource 
getConfigCenterConfigurationSource(Configuration localConfiguration) {
-
-    ConfigCenterConfigurationSource configCenterConfigurationSource = null;
-
-    for (ConfigCenterConfigurationSource item : 
configCenterConfigurationSources) {
-      if (item.isValidSource(localConfiguration)) {
-        configCenterConfigurationSource = item;
-        break;
-      }
-    }
-
-    return configCenterConfigurationSource;
-  }
-}
diff --git 
a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/MapBasedConfigurationSource.java
 
b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/MapBasedConfigurationSource.java
deleted file mode 100644
index 5f08c8a89..000000000
--- 
a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/MapBasedConfigurationSource.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.config;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource;
-
-import com.netflix.config.WatchedUpdateListener;
-import com.netflix.config.WatchedUpdateResult;
-
-public class MapBasedConfigurationSource implements 
ConfigCenterConfigurationSource {
-
-  private static final Map<String, Object> properties = new 
ConcurrentHashMap<>();
-
-  private static final Set<WatchedUpdateListener> listeners = new HashSet<>();
-
-  static {
-    properties.put("servicecomb.abc.key", "xyz");
-  }
-
-  @Override
-  public boolean isValidSource(Configuration localConfiguration) {
-    if (localConfiguration.getProperty("cse.config.client.serverUri") == null) 
{
-      return false;
-    }
-    return true;
-  }
-
-  @Override
-  public void init(Configuration localConfiguration) {
-
-  }
-
-  @Override
-  public void addUpdateListener(WatchedUpdateListener listener) {
-    listeners.add(listener);
-  }
-
-  @Override
-  public void removeUpdateListener(WatchedUpdateListener listener) {
-    listeners.remove(listener);
-  }
-
-  @Override
-  public Map<String, Object> getCurrentData() throws Exception {
-    return properties;
-  }
-
-  void addProperty(String property, Object value) {
-    properties.put(property, value);
-
-    Map<String, Object> adds = new HashMap<>();
-    adds.put(property, value);
-
-    listeners.forEach(
-        listener -> 
listener.updateConfiguration(WatchedUpdateResult.createIncremental(adds, null, 
null)));
-  }
-
-  void setProperty(String property, Object value) {
-    properties.replace(property, value);
-
-    Map<String, Object> changeds = new HashMap<>();
-    changeds.put(property, value);
-
-    listeners.forEach(listener -> listener
-        .updateConfiguration(WatchedUpdateResult.createIncremental(null, 
changeds, null)));
-  }
-
-  void deleteProperty(String property) {
-    properties.remove(property);
-
-    Map<String, Object> deletes = new HashMap<>();
-    deletes.put(property, null);
-
-    listeners.forEach(
-        listener -> 
listener.updateConfiguration(WatchedUpdateResult.createIncremental(null, null, 
deletes)));
-  }
-
-  public Map<String, Object> getProperties() {
-    return properties;
-  }
-}
diff --git 
a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java
 
b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java
index 15e223b3e..291d86145 100644
--- 
a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java
+++ 
b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java
@@ -17,14 +17,11 @@
 
 package org.apache.servicecomb.config.priority;
 
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.config.inject.InjectProperties;
 import org.apache.servicecomb.config.inject.InjectProperty;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-import com.netflix.config.DynamicProperty;
-
 public class TestPriorityPropertyManager extends TestPriorityPropertyBase {
   String high = "ms.schema.op";
 
@@ -75,10 +72,6 @@ public class TestPriorityPropertyManager extends 
TestPriorityPropertyBase {
     waitKeyForGC(priorityPropertyManager);
 
     
Assertions.assertTrue(priorityPropertyManager.getConfigObjectMap().isEmpty());
-    for (DynamicProperty property : 
ConfigUtil.getAllDynamicProperties().values()) {
-      Assertions.assertTrue(ConfigUtil.getCallbacks(property).isEmpty());
-    }
-
     System.out.println("Token : " + (System.currentTimeMillis() - timeBegin));
   }
 }
diff --git 
a/foundations/foundation-config/src/test/resources/META-INF/services/org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource
 
b/foundations/foundation-config/src/test/resources/META-INF/services/org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource
deleted file mode 100644
index 54abbb2ca..000000000
--- 
a/foundations/foundation-config/src/test/resources/META-INF/services/org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.servicecomb.config.MapBasedConfigurationSource
\ No newline at end of file
diff --git 
a/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java
 
b/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java
index 1d161792c..a30b892f8 100644
--- 
a/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java
+++ 
b/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java
@@ -24,7 +24,6 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.foundation.common.cache.VersionedCache;
 import 
org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
 import org.apache.servicecomb.registry.DiscoveryManager;
@@ -44,7 +43,7 @@ public class TestDiscoveryTree {
 
   @BeforeEach
   public void before() {
-    ConfigUtil.installDynamicConfig();
+
   }
 
   @AfterEach
diff --git 
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java
 
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java
index ff505fc99..81f24cd8b 100644
--- 
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java
+++ 
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java
@@ -17,7 +17,6 @@
 
 package org.apache.servicecomb.loadbalance;
 
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.junit.After;
 import org.junit.Before;
@@ -26,8 +25,6 @@ import org.junit.jupiter.api.Assertions;
 import org.mockito.Mockito;
 import org.springframework.core.env.Environment;
 
-import com.netflix.config.ConcurrentCompositeConfiguration;
-
 /**
  *
  */
@@ -70,26 +67,6 @@ public class TestConfiguration {
     
Assertions.assertNotNull(Configuration.INSTANCE.getSessionTimeoutInSeconds("test"));
   }
 
-
-  /**
-   * The property key of  timerIntervalInMilis  changed from 
<code>servicecomb.loadbalance.stats.timerIntervalInMilis</code>
-   * to <code>servicecomb.loadbalance.stats.timerIntervalInMillis</code>, 
check the compatibility
-   */
-  @Test
-  public void testGetTimerIntervalInMillis() {
-    System.setProperty(Configuration.TIMER_INTERVAL_IN_MILLIS, "100");
-    ConcurrentCompositeConfiguration localConfiguration = 
ConfigUtil.createLocalConfig();
-    Assertions.assertEquals("100", 
localConfiguration.getProperty(Configuration.TIMER_INTERVAL_IN_MILLIS));
-
-    System.clearProperty(Configuration.TIMER_INTERVAL_IN_MILLIS);
-    localConfiguration = ConfigUtil.createLocalConfig();
-    
Assertions.assertNull(localConfiguration.getProperty(Configuration.TIMER_INTERVAL_IN_MILLIS));
-
-    System.setProperty("servicecomb.loadbalance.stats.timerIntervalInMilis", 
"100");
-    localConfiguration = ConfigUtil.createLocalConfig();
-    Assertions.assertEquals("100", 
localConfiguration.getProperty(Configuration.TIMER_INTERVAL_IN_MILLIS));
-  }
-
   @Test
   public void testGetMaxSingleTestWindow() {
     Assertions.assertEquals(60000, 
Configuration.INSTANCE.getMaxSingleTestWindow());
diff --git 
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
 
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
index bdc657b81..a03c0e4dd 100644
--- 
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
+++ 
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
@@ -25,7 +25,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
@@ -74,7 +73,6 @@ public class TestLoadBalanceFilter {
 
   @Before
   public void setUp() {
-    ConfigUtil.installDynamicConfig();
     scbEngine = SCBBootstrap.createSCBEngineForTest();
     Environment environment = Mockito.mock(Environment.class);
     scbEngine.setEnvironment(environment);
diff --git 
a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java
 
b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java
index 330bd0d09..cd7d2fc10 100644
--- 
a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java
+++ 
b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java
@@ -21,7 +21,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.configuration.Configuration;
 import org.apache.http.HttpHost;
 import org.apache.http.auth.AuthScope;
 import org.apache.http.auth.UsernamePasswordCredentials;
@@ -72,7 +71,7 @@ public class DefaultMonitorDataPublisher implements 
MonitorDataPublisher {
     requestBuilder.setSocketTimeout(10000);
 
     HttpTransport httpTransport = createHttpTransport(addressManager, 
requestBuilder.build(),
-        ConfigUtil.createLocalConfig());
+        environment);
 
     dashboardClient = new DashboardClient(addressManager, httpTransport);
   }
@@ -90,7 +89,7 @@ public class DefaultMonitorDataPublisher implements 
MonitorDataPublisher {
   }
 
   private HttpTransport createHttpTransport(DashboardAddressManager 
addressManager, RequestConfig requestConfig,
-      Configuration localConfiguration) {
+      Environment environment) {
     List<AuthHeaderProvider> authHeaderProviders = 
SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class);
 
     if (monitorConstant.isProxyEnable()) {
@@ -108,14 +107,14 @@ public class DefaultMonitorDataPublisher implements 
MonitorDataPublisher {
       return HttpTransportFactory
           .createHttpTransport(
               TransportUtils
-                  .createSSLProperties(addressManager.sslEnabled(), 
localConfiguration, SSL_KEY),
+                  .createSSLProperties(addressManager.sslEnabled(), 
environment, SSL_KEY),
               getRequestAuthHeaderProvider(authHeaderProviders), 
httpClientBuilder);
     }
 
     return HttpTransportFactory
         .createHttpTransport(
             TransportUtils
-                .createSSLProperties(monitorConstant.sslEnabled(), 
localConfiguration, SSL_KEY),
+                .createSSLProperties(monitorConstant.sslEnabled(), 
environment, SSL_KEY),
             getRequestAuthHeaderProvider(authHeaderProviders), requestConfig);
   }
 
diff --git 
a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java
 
b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java
index 0f49400fe..ed2aaec26 100644
--- 
a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java
+++ 
b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java
@@ -23,9 +23,10 @@ import org.apache.commons.configuration.Configuration;
 import org.apache.servicecomb.foundation.ssl.SSLCustom;
 import org.apache.servicecomb.foundation.ssl.SSLOption;
 import 
org.apache.servicecomb.http.client.common.HttpConfiguration.SSLProperties;
+import org.springframework.core.env.Environment;
 
 public class TransportUtils {
-  public static SSLProperties createSSLProperties(boolean sslEnabled, 
Configuration configuration, String tag) {
+  public static SSLProperties createSSLProperties(boolean sslEnabled, 
Environment environment, String tag) {
     SSLProperties sslProperties = new SSLProperties();
     sslProperties.setEnabled(sslEnabled);
 
@@ -34,93 +35,93 @@ public class TransportUtils {
     }
 
     SSLOption option = new SSLOption();
-    option.setEngine(getStringProperty(configuration,
+    option.setEngine(getStringProperty(environment,
         DEFAULT_OPTION.getEngine(),
         "ssl." + tag + ".engine",
         "ssl.engine"));
     option.setProtocols(
-        getStringProperty(configuration,
+        getStringProperty(environment,
             DEFAULT_OPTION.getProtocols(),
             "ssl." + tag + ".protocols",
             "ssl.protocols"));
     option.setCiphers(
-        getStringProperty(configuration, DEFAULT_OPTION.getCiphers(), "ssl." + 
tag + ".ciphers", "ssl.ciphers"));
+        getStringProperty(environment, DEFAULT_OPTION.getCiphers(), "ssl." + 
tag + ".ciphers", "ssl.ciphers"));
     option.setAuthPeer(
-        getBooleanProperty(configuration, DEFAULT_OPTION.isAuthPeer(), "ssl." 
+ tag + ".authPeer", "ssl.authPeer"));
+        getBooleanProperty(environment, DEFAULT_OPTION.isAuthPeer(), "ssl." + 
tag + ".authPeer", "ssl.authPeer"));
     option.setCheckCNHost(
-        getBooleanProperty(configuration,
+        getBooleanProperty(environment,
             DEFAULT_OPTION.isCheckCNHost(),
             "ssl." + tag + ".checkCN.host",
             "ssl.checkCN.host"));
     option.setCheckCNWhite(
-        getBooleanProperty(configuration,
+        getBooleanProperty(environment,
             DEFAULT_OPTION.isCheckCNWhite(),
             "ssl." + tag + ".checkCN.white",
             "ssl.checkCN.white"));
-    option.setCheckCNWhiteFile(getStringProperty(configuration,
+    option.setCheckCNWhiteFile(getStringProperty(environment,
         DEFAULT_OPTION.getCiphers(),
         "ssl." + tag + ".checkCN.white.file",
         "ssl.checkCN.white.file"));
-    option.setAllowRenegociate(getBooleanProperty(configuration,
+    option.setAllowRenegociate(getBooleanProperty(environment,
         DEFAULT_OPTION.isAllowRenegociate(),
         "ssl." + tag + ".allowRenegociate",
         "ssl.allowRenegociate"));
     option.setStorePath(
-        getStringProperty(configuration,
+        getStringProperty(environment,
             DEFAULT_OPTION.getStorePath(),
             "ssl." + tag + ".storePath",
             "ssl.storePath"));
     option.setClientAuth(
-        getStringProperty(configuration,
+        getStringProperty(environment,
             DEFAULT_OPTION.getClientAuth(),
             "ssl." + tag + ".clientAuth",
             "ssl.clientAuth"));
     option.setTrustStore(
-        getStringProperty(configuration,
+        getStringProperty(environment,
             DEFAULT_OPTION.getTrustStore(),
             "ssl." + tag + ".trustStore",
             "ssl.trustStore"));
-    option.setTrustStoreType(getStringProperty(configuration,
+    option.setTrustStoreType(getStringProperty(environment,
         DEFAULT_OPTION.getTrustStoreType(),
         "ssl." + tag + ".trustStoreType",
         "ssl.trustStoreType"));
-    option.setTrustStoreValue(getStringProperty(configuration,
+    option.setTrustStoreValue(getStringProperty(environment,
         DEFAULT_OPTION.getTrustStoreValue(),
         "ssl." + tag + ".trustStoreValue",
         "ssl.trustStoreValue"));
     option.setKeyStore(
-        getStringProperty(configuration, DEFAULT_OPTION.getKeyStore(), "ssl." 
+ tag + ".keyStore", "ssl.keyStore"));
+        getStringProperty(environment, DEFAULT_OPTION.getKeyStore(), "ssl." + 
tag + ".keyStore", "ssl.keyStore"));
     option.setKeyStoreType(
-        getStringProperty(configuration,
+        getStringProperty(environment,
             DEFAULT_OPTION.getKeyStoreType(),
             "ssl." + tag + ".keyStoreType",
             "ssl.keyStoreType"));
-    option.setKeyStoreValue(getStringProperty(configuration,
+    option.setKeyStoreValue(getStringProperty(environment,
         DEFAULT_OPTION.getKeyStoreValue(),
         "ssl." + tag + ".keyStoreValue",
         "ssl.keyStoreValue"));
-    option.setCrl(getStringProperty(configuration, DEFAULT_OPTION.getCrl(), 
"ssl." + tag + ".crl", "ssl.crl"));
+    option.setCrl(getStringProperty(environment, DEFAULT_OPTION.getCrl(), 
"ssl." + tag + ".crl", "ssl.crl"));
     option.setSslCustomClass(
-        getStringProperty(configuration, null, "ssl." + tag + 
".sslCustomClass", "ssl.sslCustomClass"));
+        getStringProperty(environment, null, "ssl." + tag + ".sslCustomClass", 
"ssl.sslCustomClass"));
 
     sslProperties.setSslOption(option);
     
sslProperties.setSslCustom(SSLCustom.createSSLCustom(option.getSslCustomClass()));
     return sslProperties;
   }
 
-  private static String getStringProperty(Configuration configuration, String 
defaultValue, String... keys) {
+  private static String getStringProperty(Environment environment, String 
defaultValue, String... keys) {
     for (String key : keys) {
-      if (configuration.containsKey(key)) {
-        return configuration.getString(key);
+      if (environment.getProperty(key) != null) {
+        return environment.getProperty(key);
       }
     }
     return defaultValue;
   }
 
-  private static boolean getBooleanProperty(Configuration configuration, 
boolean defaultValue, String... keys) {
+  private static boolean getBooleanProperty(Environment environment, boolean 
defaultValue, String... keys) {
     for (String key : keys) {
-      if (configuration.containsKey(key)) {
-        return configuration.getBoolean(key);
+      if (environment.getProperty(key) != null) {
+        return environment.getProperty(key, boolean.class, false);
       }
     }
     return defaultValue;

Reply via email to