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 1c924443c70c37cc680413bb7eb128ccbfeba516
Author: liubao <bi...@qq.com>
AuthorDate: Mon Sep 18 09:19:49 2023 +0800

    [SCB-2008]change DynamicPropertyFactory to Environment: core and transports
---
 .../servicecomb/common/rest/UploadConfig.java      |  69 ++----
 .../servicecomb/common/rest/TestUploadConfig.java  |  76 -------
 .../rest/locator/TestServicePathManager.java       |   2 +
 .../core/ConfigurationSpringInitializer.java       |  10 +-
 .../core/filter/impl/ParameterValidatorFilter.java |  15 +-
 .../core/governance/GovernanceConfiguration.java   |   4 +-
 .../provider/producer/ProducerProviderManager.java |   5 +-
 .../core/transport/AbstractTransport.java          |  14 +-
 .../filter/impl/ParameterValidatorFilterTest.java  |  12 +-
 .../core/transport/TestAbstractTransport.java      |  18 ++
 .../config/FoundationConfigConfiguration.java      |   6 +
 .../servicecomb/config/LegacyPropertyFactory.java  |  59 +++++
 .../inspector/internal/TestInspectorImpl.java      |   9 +
 .../transport/common/TransportConfigUtils.java     |   7 +-
 .../transport/common/TestTransportConfigUtils.java |  28 ++-
 .../transport/highway/HighwayClient.java           |  11 +-
 .../transport/highway/HighwayConfig.java           |   8 +-
 .../transport/highway/HighwayServer.java           |   6 +-
 .../transport/highway/TestHighwayClient.java       |  29 ++-
 .../transport/highway/TestHighwayConfig.java       |  53 -----
 .../transport/highway/TestHighwayTransport.java    |  23 ++
 .../rest/client/TransportClientConfig.java         |  79 +++----
 .../rest/client/TestTransportClientConfig.java     |  97 ---------
 .../transport/rest/servlet/ServletConfig.java      |  19 +-
 .../transport/rest/servlet/TestServletConfig.java  |  57 -----
 .../rest/servlet/TestServletRestTransport.java     |  16 ++
 .../transport/rest/servlet/TestServletUtils.java   |  37 ++--
 .../transport/rest/vertx/RestServerVerticle.java   |  11 +-
 .../transport/rest/vertx/TransportConfig.java      | 122 +++++------
 .../transport/rest/vertx/VertxRestDispatcher.java  |  18 +-
 .../vertx/TestAbstractVertxHttpDispatcher.java     |  39 ++--
 .../rest/vertx/TestRestServerVerticle.java         | 146 +++++++++----
 .../transport/rest/vertx/TestTransportConfig.java  | 237 ---------------------
 .../rest/vertx/TestVertxRestDispatcher.java        |  23 +-
 .../rest/vertx/TestVertxRestTransport.java         |  32 ++-
 35 files changed, 531 insertions(+), 866 deletions(-)

diff --git 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/UploadConfig.java
 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/UploadConfig.java
index a5d921b1a..fb89bf91c 100644
--- 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/UploadConfig.java
+++ 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/UploadConfig.java
@@ -16,79 +16,46 @@
  */
 package org.apache.servicecomb.common.rest;
 
-import jakarta.servlet.MultipartConfigElement;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 
-import com.netflix.config.DynamicPropertyFactory;
+import jakarta.servlet.MultipartConfigElement;
 
 public class UploadConfig {
-
   /**
    * null means not support upload
    */
-  private String location;
+  public String getLocation() {
+    return LegacyPropertyFactory
+        .getStringProperty(RestConst.UPLOAD_DIR, RestConst.UPLOAD_DEFAULT_DIR);
+  }
 
   /**
    * limit of one upload file, only available for servlet rest transport
    */
-  private long maxFileSize;
+  public long getMaxFileSize() {
+    return 
LegacyPropertyFactory.getLongProperty(RestConst.UPLOAD_MAX_FILE_SIZE, -1L);
+  }
 
   /**
    * limit of upload request body
    */
-  private long maxSize;
-
-  /**
-   * the size threshold after which files will be written to disk, only 
available for servlet rest transport
-   */
-  private int fileSizeThreshold;
-
-  public UploadConfig() {
-    location = DynamicPropertyFactory.getInstance()
-        .getStringProperty(RestConst.UPLOAD_DIR, 
RestConst.UPLOAD_DEFAULT_DIR).get();
-    maxFileSize = 
DynamicPropertyFactory.getInstance().getLongProperty(RestConst.UPLOAD_MAX_FILE_SIZE,
 -1L).get();
-    maxSize = 
DynamicPropertyFactory.getInstance().getLongProperty(RestConst.UPLOAD_MAX_SIZE, 
-1L).get();
-    fileSizeThreshold = 
DynamicPropertyFactory.getInstance().getIntProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD,
 0)
-        .get();
-  }
-
-  public String getLocation() {
-    return location;
-  }
-
-  public void setLocation(String location) {
-    this.location = location;
-  }
-
-  public long getMaxFileSize() {
-    return maxFileSize;
-  }
-
-  public void setMaxFileSize(long maxFileSize) {
-    this.maxFileSize = maxFileSize;
-  }
-
   public long getMaxSize() {
-    return maxSize;
+    return LegacyPropertyFactory.getLongProperty(RestConst.UPLOAD_MAX_SIZE, 
-1L);
   }
 
-  public void setMaxSize(long maxSize) {
-    this.maxSize = maxSize;
-  }
 
+  /**
+   * the size threshold after which files will be written to disk, only 
available for servlet rest transport
+   */
   public int getFileSizeThreshold() {
-    return fileSizeThreshold;
-  }
-
-  public void setFileSizeThreshold(int fileSizeThreshold) {
-    this.fileSizeThreshold = fileSizeThreshold;
+    return 
LegacyPropertyFactory.getIntProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD, 0);
   }
 
   public MultipartConfigElement toMultipartConfigElement() {
-
     return new MultipartConfigElement(
-        location,
-        
DynamicPropertyFactory.getInstance().getLongProperty(RestConst.UPLOAD_MAX_FILE_SIZE,
 -1L).get(),
-        
DynamicPropertyFactory.getInstance().getLongProperty(RestConst.UPLOAD_MAX_SIZE, 
-1L).get(),
-        
DynamicPropertyFactory.getInstance().getIntProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD,
 0).get());
+        getLocation(),
+        getMaxFileSize(),
+        getMaxSize(),
+        getFileSizeThreshold());
   }
 }
diff --git 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestUploadConfig.java
 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestUploadConfig.java
deleted file mode 100644
index 4ef76bdee..000000000
--- 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestUploadConfig.java
+++ /dev/null
@@ -1,76 +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.common.rest;
-
-import jakarta.servlet.MultipartConfigElement;
-
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class TestUploadConfig {
-  @BeforeEach
-  public void setUp() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @AfterEach
-  public void tearDown() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @Test
-  public void getMultipartConfig_default() {
-    ArchaiusUtils.setProperty(RestConst.UPLOAD_DIR, "upload");
-
-    UploadConfig uploadConfig = new UploadConfig();
-    MultipartConfigElement multipartConfigElement = 
uploadConfig.toMultipartConfigElement();
-
-    Assertions.assertEquals("upload", uploadConfig.getLocation());
-    Assertions.assertEquals(-1L, uploadConfig.getMaxFileSize());
-    Assertions.assertEquals(-1L, uploadConfig.getMaxSize());
-    Assertions.assertEquals(0, uploadConfig.getFileSizeThreshold());
-
-    Assertions.assertEquals("upload", multipartConfigElement.getLocation());
-    Assertions.assertEquals(-1L, multipartConfigElement.getMaxFileSize());
-    Assertions.assertEquals(-1L, multipartConfigElement.getMaxRequestSize());
-    Assertions.assertEquals(0, multipartConfigElement.getFileSizeThreshold());
-  }
-
-  @Test
-  public void getMultipartConfig_config() {
-    ArchaiusUtils.setProperty(RestConst.UPLOAD_DIR, "upload");
-    ArchaiusUtils.setProperty(RestConst.UPLOAD_MAX_FILE_SIZE, 1);
-    ArchaiusUtils.setProperty(RestConst.UPLOAD_MAX_SIZE, 2);
-    ArchaiusUtils.setProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD, 3);
-
-    UploadConfig uploadConfig = new UploadConfig();
-    MultipartConfigElement multipartConfigElement = 
uploadConfig.toMultipartConfigElement();
-
-    Assertions.assertEquals("upload", uploadConfig.getLocation());
-    Assertions.assertEquals(1, uploadConfig.getMaxFileSize());
-    Assertions.assertEquals(2, uploadConfig.getMaxSize());
-    Assertions.assertEquals(3, uploadConfig.getFileSizeThreshold());
-
-    Assertions.assertEquals("upload", multipartConfigElement.getLocation());
-    Assertions.assertEquals(1, multipartConfigElement.getMaxFileSize());
-    Assertions.assertEquals(2, multipartConfigElement.getMaxRequestSize());
-    Assertions.assertEquals(3, multipartConfigElement.getFileSizeThreshold());
-  }
-}
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 2e244e123..902ea583d 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
@@ -87,6 +87,8 @@ public class TestServicePathManager {
     scbEngine.setEnvironment(environment);
     Mockito.when(environment.getProperty(CFG_KEY_TURN_DOWN_STATUS_WAIT_SEC,
         long.class, 
DEFAULT_TURN_DOWN_STATUS_WAIT_SEC)).thenReturn(DEFAULT_TURN_DOWN_STATUS_WAIT_SEC);
+    Mockito.when(environment.getProperty(DefinitionConst.REGISTER_URL_PREFIX, 
boolean.class, false)).thenReturn(false);
+
     ExecutorManager executorManager = Mockito.mock(ExecutorManager.class);
     TransportManager transportManager = Mockito.mock(TransportManager.class);
     scbEngine.setTransportManager(transportManager);
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
 
b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
index c3e9952b7..f814f1209 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
@@ -52,10 +52,8 @@ import org.springframework.core.env.MapPropertySource;
 import org.springframework.core.env.MutablePropertySources;
 import org.springframework.core.env.PropertySource;
 
-
 import com.google.common.eventbus.Subscribe;
 import com.netflix.config.ConfigurationManager;
-import com.netflix.config.DynamicPropertyFactory;
 import com.netflix.config.WatchedUpdateResult;
 
 /**
@@ -243,8 +241,8 @@ public class ConfigurationSpringInitializer extends 
PropertySourcesPlaceholderCo
     try {
       ce.getPropertySources().addFirst(new MapPropertySource("dynamic-source", 
dynamicData));
     } catch (Exception e) {
-      if 
(DynamicPropertyFactory.getInstance().getBooleanProperty(CoreConst.PRINT_SENSITIVE_ERROR_MESSAGE,
-          false).get()) {
+      if (environment.getProperty(CoreConst.PRINT_SENSITIVE_ERROR_MESSAGE, 
boolean.class,
+          false)) {
         LOGGER.warn("set up spring property source failed.", e);
       } else {
         LOGGER.warn("set up spring property source failed. msg: {}", 
e.getMessage());
@@ -331,7 +329,9 @@ public class ConfigurationSpringInitializer extends 
PropertySourcesPlaceholderCo
         try {
           Object propertyValue = environment.getProperty(propertyName, 
Object.class);
           if (propertyValue == null) {
-            LOGGER.error("The value of a configuration item is null, please 
check whether there is any impact, config item key: {}", propertyName);
+            LOGGER.error(
+                "The value of a configuration item is null, please check 
whether there is any impact, config item key: {}",
+                propertyName);
             continue;
           }
           configFromSpringBoot.put(propertyName, propertyValue);
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
 
b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
index 03efe04ad..ea5cf5ffd 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
@@ -37,8 +37,8 @@ import 
org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpo
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
-
-import com.netflix.config.DynamicPropertyFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 
 import jakarta.validation.ConstraintViolation;
 import jakarta.validation.ConstraintViolationException;
@@ -52,10 +52,17 @@ public class ParameterValidatorFilter implements 
ProviderFilter, InitializingBea
 
   public static final String NAME = "validator";
 
-  private static final String ENABLE_EL = 
"servicecomb.filters.validation.useResourceBundleMessageInterpolator";
+  public static final String ENABLE_EL = 
"servicecomb.filters.validation.useResourceBundleMessageInterpolator";
 
   protected ExecutableValidator validator;
 
+  private Environment environment;
+
+  @Autowired
+  public void setEnvironment(Environment environment) {
+    this.environment = environment;
+  }
+
   @Nonnull
   @Override
   public String getName() {
@@ -89,7 +96,7 @@ public class ParameterValidatorFilter implements 
ProviderFilter, InitializingBea
   }
 
   private boolean useResourceBundleMessageInterpolator() {
-    return DynamicPropertyFactory.getInstance().getBooleanProperty(ENABLE_EL, 
false).get();
+    return environment.getProperty(ENABLE_EL, boolean.class, false);
   }
 
   @Override
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/governance/GovernanceConfiguration.java
 
b/core/src/main/java/org/apache/servicecomb/core/governance/GovernanceConfiguration.java
index eff944fff..37ca9ce0c 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/governance/GovernanceConfiguration.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/governance/GovernanceConfiguration.java
@@ -16,7 +16,7 @@
  */
 package org.apache.servicecomb.core.governance;
 
-import com.netflix.config.DynamicPropertyFactory;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 
 public class GovernanceConfiguration {
   public static final String ROOT = "servicecomb.loadbalance.";
@@ -62,7 +62,7 @@ public class GovernanceConfiguration {
   public static String getStringProperty(String defaultValue, String... keys) {
     String property;
     for (String key : keys) {
-      property = DynamicPropertyFactory.getInstance().getStringProperty(key, 
null).get();
+      property = LegacyPropertyFactory.getStringProperty(key);
       if (property != null) {
         return property;
       }
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
 
b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
index 6344b90b1..68ba02f36 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
@@ -39,8 +39,6 @@ import 
org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.netflix.config.DynamicPropertyFactory;
-
 import io.swagger.v3.oas.models.OpenAPI;
 
 public class ProducerProviderManager {
@@ -121,8 +119,7 @@ public class ProducerProviderManager {
   private void registerUrlPrefixToSwagger(OpenAPI swagger) {
     String urlPrefix = 
ClassLoaderScopeContext.getClassLoaderScopeProperty(DefinitionConst.URL_PREFIX);
     if (!StringUtils.isEmpty(urlPrefix) && 
!SwaggerUtils.getBasePath(swagger).startsWith(urlPrefix)
-        && DynamicPropertyFactory.getInstance()
-        .getBooleanProperty(DefinitionConst.REGISTER_URL_PREFIX, false).get()) 
{
+        && 
scbEngine.getEnvironment().getProperty(DefinitionConst.REGISTER_URL_PREFIX, 
boolean.class, false)) {
       LOGGER.info("Add swagger base path prefix for {} with {}", 
SwaggerUtils.getBasePath(swagger), urlPrefix);
       SwaggerUtils.setBasePath(swagger, urlPrefix + 
SwaggerUtils.getBasePath(swagger));
     }
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/transport/AbstractTransport.java
 
b/core/src/main/java/org/apache/servicecomb/core/transport/AbstractTransport.java
index de9926fa8..8a68eb9ec 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/transport/AbstractTransport.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/transport/AbstractTransport.java
@@ -38,8 +38,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.env.Environment;
 
-import com.netflix.config.DynamicPropertyFactory;
-
 import io.vertx.core.Vertx;
 
 public abstract class AbstractTransport implements Transport {
@@ -133,7 +131,7 @@ public abstract class AbstractTransport implements 
Transport {
    *
    * @return the publish address, or {@code null} if the param {@code address} 
is null.
    */
-  public static String getPublishAddress(String schema, String address) {
+  protected String getPublishAddress(String schema, String address) {
     if (address == null) {
       return address;
     }
@@ -155,16 +153,12 @@ public abstract class AbstractTransport implements 
Transport {
     }
   }
 
-  private static IpPort genPublishIpPort(String schema, IpPort ipPort) {
-    String publicAddressSetting = DynamicPropertyFactory.getInstance()
-        .getStringProperty(PUBLISH_ADDRESS, "")
-        .get();
+  private IpPort genPublishIpPort(String schema, IpPort ipPort) {
+    String publicAddressSetting = environment.getProperty(PUBLISH_ADDRESS, 
String.class, "");
     publicAddressSetting = publicAddressSetting.trim();
 
     String publishPortKey = PUBLISH_PORT.replace("{transport_name}", schema);
-    int publishPortSetting = DynamicPropertyFactory.getInstance()
-        .getIntProperty(publishPortKey, 0)
-        .get();
+    int publishPortSetting = environment.getProperty(publishPortKey, 
int.class, 0);
     int publishPort = publishPortSetting == 0 ? ipPort.getPort() : 
publishPortSetting;
 
     if (publicAddressSetting.isEmpty()) {
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilterTest.java
 
b/core/src/test/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilterTest.java
index d7ed12f58..5d441ef26 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilterTest.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilterTest.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.core.filter.impl;
 import static jakarta.ws.rs.core.Response.Status.BAD_REQUEST;
 import static 
org.apache.servicecomb.core.exception.ExceptionCodes.DEFAULT_VALIDATE;
 import static 
org.apache.servicecomb.core.exception.converter.ConstraintViolationExceptionConverter.KEY_CODE;
+import static 
org.apache.servicecomb.core.filter.impl.ParameterValidatorFilter.ENABLE_EL;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.catchThrowable;
 
@@ -39,7 +40,6 @@ import 
org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.springframework.core.env.Environment;
@@ -88,7 +88,7 @@ public class ParameterValidatorFilterTest {
     }
   }
 
-  static ParameterValidatorFilter filter = new ParameterValidatorFilter();
+  ParameterValidatorFilter filter = new ParameterValidatorFilter();
 
   @Mocked
   Invocation invocation;
@@ -98,15 +98,13 @@ public class ParameterValidatorFilterTest {
 
   Environment environment;
 
-  @BeforeClass
-  public static void beforeClass() throws Exception {
-    filter.afterPropertiesSet();
-  }
-
   @Before
   public void setUp() throws Exception {
     SCBEngine engine = SCBBootstrap.createSCBEngineForTest();
     environment = Mockito.mock(Environment.class);
+    Mockito.when(environment.getProperty(ENABLE_EL, boolean.class, 
false)).thenReturn(false);
+    filter.setEnvironment(environment);
+    filter.afterPropertiesSet();
     engine.setEnvironment(environment);
     new Expectations() {
       {
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/transport/TestAbstractTransport.java
 
b/core/src/test/java/org/apache/servicecomb/core/transport/TestAbstractTransport.java
index cf0a1e3e4..640134367 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/transport/TestAbstractTransport.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/transport/TestAbstractTransport.java
@@ -17,6 +17,8 @@
 
 package org.apache.servicecomb.core.transport;
 
+import static 
org.apache.servicecomb.core.transport.AbstractTransport.PUBLISH_ADDRESS;
+
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
@@ -24,9 +26,14 @@ import java.util.Collections;
 
 import org.apache.servicecomb.foundation.common.net.IpPort;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 public class TestAbstractTransport {
+  Environment environment = Mockito.mock(Environment.class);
+
   static class MyAbstractTransport extends AbstractTransport {
 
     @Override
@@ -40,9 +47,16 @@ public class TestAbstractTransport {
     }
   }
 
+  @BeforeEach
+  public void setUp() {
+    Mockito.when(environment.getProperty(PUBLISH_ADDRESS, String.class, 
"")).thenReturn("");
+    Mockito.when(environment.getProperty("servicecomb.my.publishPort", 
int.class, 0)).thenReturn(0);
+  }
+
   @Test
   public void testSetListenAddressWithoutSchemaChineseSpaceNewSC() throws 
UnsupportedEncodingException {
     MyAbstractTransport transport = new MyAbstractTransport();
+    transport.setEnvironment(environment);
     transport.setListenAddressWithoutSchema("127.0.0.1:9090", 
Collections.singletonMap("country", "中 国"));
     Assertions.assertEquals("my://127.0.0.1:9090?country=" + 
URLEncoder.encode("中 国", StandardCharsets.UTF_8.name()),
         transport.getEndpoint().getEndpoint());
@@ -51,6 +65,7 @@ public class TestAbstractTransport {
   @Test
   public void testSetListenAddressWithoutSchemaNormalNotEncode() {
     MyAbstractTransport transport = new MyAbstractTransport();
+    transport.setEnvironment(environment);
     transport.setListenAddressWithoutSchema("127.0.0.1:9090", 
Collections.singletonMap("country", "chinese"));
     Assertions.assertEquals("my://127.0.0.1:9090?country=chinese", 
transport.getEndpoint().getEndpoint());
   }
@@ -58,6 +73,7 @@ public class TestAbstractTransport {
   @Test
   public void testSetListenAddressWithoutSchemaAlreadyHaveQuery() {
     MyAbstractTransport transport = new MyAbstractTransport();
+    transport.setEnvironment(environment);
     transport.setListenAddressWithoutSchema("127.0.0.1:9090?a=aValue",
         Collections.singletonMap("country", "chinese"));
     Assertions.assertEquals("my://127.0.0.1:9090?a=aValue&country=chinese", 
transport.getEndpoint().getEndpoint());
@@ -66,6 +82,7 @@ public class TestAbstractTransport {
   @Test
   public void testMyAbstractTransport() {
     MyAbstractTransport transport = new MyAbstractTransport();
+    transport.setEnvironment(environment);
     transport.setListenAddressWithoutSchema("127.0.0.1:9090");
     Assertions.assertEquals("my", transport.getName());
     Assertions.assertEquals("my://127.0.0.1:9090", 
transport.getEndpoint().getEndpoint());
@@ -80,6 +97,7 @@ public class TestAbstractTransport {
   @Test
   public void testMyAbstractTransportException() {
     MyAbstractTransport transport = new MyAbstractTransport();
+    transport.setEnvironment(environment);
     Assertions.assertThrows(IllegalArgumentException.class, () ->
         transport.setListenAddressWithoutSchema(":127.0.0.1:9090"));
   }
diff --git 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/FoundationConfigConfiguration.java
 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/FoundationConfigConfiguration.java
index 87ee0c5c7..00e302bf5 100644
--- 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/FoundationConfigConfiguration.java
+++ 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/FoundationConfigConfiguration.java
@@ -23,6 +23,7 @@ import 
org.apache.servicecomb.config.priority.PriorityPropertyManager;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
 
 @Configuration
 @SuppressWarnings("unused")
@@ -68,4 +69,9 @@ public class FoundationConfigConfiguration {
   public DataCenterProperties dataCenterProperties() {
     return new DataCenterProperties();
   }
+
+  @Bean
+  public LegacyPropertyFactory legacyPropertyFactory(Environment environment) {
+    return new LegacyPropertyFactory(environment);
+  }
 }
diff --git 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LegacyPropertyFactory.java
 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LegacyPropertyFactory.java
new file mode 100644
index 000000000..f01f8736b
--- /dev/null
+++ 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LegacyPropertyFactory.java
@@ -0,0 +1,59 @@
+/*
+ * 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 org.springframework.core.env.Environment;
+
+import com.google.common.annotations.VisibleForTesting;
+
+/**
+ * Provider a convenient way to get property value in static context.
+ *
+ * NOTE: this way is not commented and only for legacy code without too much 
refactoring.
+ */
+public class LegacyPropertyFactory {
+  private static Environment environment;
+
+  public LegacyPropertyFactory(Environment environment) {
+    LegacyPropertyFactory.environment = environment;
+  }
+
+  @VisibleForTesting
+  public static void setEnvironment(Environment environment) {
+    LegacyPropertyFactory.environment = environment;
+  }
+
+  public static boolean getBooleanProperty(String key, boolean defaultValue) {
+    return environment.getProperty(key, boolean.class, defaultValue);
+  }
+
+  public static int getIntProperty(String key, int defaultValue) {
+    return environment.getProperty(key, int.class, defaultValue);
+  }
+
+  public static long getLongProperty(String key, long defaultValue) {
+    return environment.getProperty(key, long.class, defaultValue);
+  }
+
+  public static String getStringProperty(String key) {
+    return environment.getProperty(key);
+  }
+
+  public static String getStringProperty(String key, String defaultValue) {
+    return environment.getProperty(key, String.class, defaultValue);
+  }
+}
diff --git 
a/inspector/src/test/java/org/apache/servicecomb/inspector/internal/TestInspectorImpl.java
 
b/inspector/src/test/java/org/apache/servicecomb/inspector/internal/TestInspectorImpl.java
index f28f966f0..715d3fed4 100644
--- 
a/inspector/src/test/java/org/apache/servicecomb/inspector/internal/TestInspectorImpl.java
+++ 
b/inspector/src/test/java/org/apache/servicecomb/inspector/internal/TestInspectorImpl.java
@@ -34,6 +34,7 @@ import java.util.zip.ZipInputStream;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.servicecomb.config.ConfigUtil;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.config.priority.PriorityPropertyFactory;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
@@ -55,6 +56,7 @@ import org.hamcrest.Matchers;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledForJreRange;
 import org.junit.jupiter.api.condition.JRE;
@@ -84,6 +86,13 @@ public class TestInspectorImpl {
     inspector = initInspector(null);
   }
 
+  Environment environment = Mockito.mock(Environment.class);
+
+  @BeforeEach
+  public void setUp() {
+    LegacyPropertyFactory.setEnvironment(environment);
+  }
+
   private static InspectorImpl initInspector(String urlPrefix) {
     SCBEngine scbEngine = SCBBootstrap.createSCBEngineForTest();
     Environment environment = Mockito.mock(Environment.class);
diff --git 
a/transports/transport-common/src/main/java/org/apache/servicecomb/transport/common/TransportConfigUtils.java
 
b/transports/transport-common/src/main/java/org/apache/servicecomb/transport/common/TransportConfigUtils.java
index 29a7b9533..26524a094 100644
--- 
a/transports/transport-common/src/main/java/org/apache/servicecomb/transport/common/TransportConfigUtils.java
+++ 
b/transports/transport-common/src/main/java/org/apache/servicecomb/transport/common/TransportConfigUtils.java
@@ -16,11 +16,10 @@
  */
 package org.apache.servicecomb.transport.common;
 
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.netflix.config.DynamicPropertyFactory;
-
 public final class TransportConfigUtils {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TransportConfigUtils.class);
 
@@ -30,12 +29,12 @@ public final class TransportConfigUtils {
   // old verticle count key is ambiguous
   // suggest to use new name
   public static int readVerticleCount(String key, String deprecatedKey) {
-    int count = DynamicPropertyFactory.getInstance().getIntProperty(key, 
-1).get();
+    int count = LegacyPropertyFactory.getIntProperty(key, -1);
     if (count > 0) {
       return count;
     }
 
-    count = DynamicPropertyFactory.getInstance().getIntProperty(deprecatedKey, 
-1).get();
+    count = LegacyPropertyFactory.getIntProperty(deprecatedKey, -1);
     if (count > 0) {
       LOGGER.warn("{} is ambiguous, and deprecated, recommended to use {}.", 
deprecatedKey, key);
       return count;
diff --git 
a/transports/transport-common/src/test/java/org/apache/servicecomb/transport/common/TestTransportConfigUtils.java
 
b/transports/transport-common/src/test/java/org/apache/servicecomb/transport/common/TestTransportConfigUtils.java
index a05f51906..14a77032d 100644
--- 
a/transports/transport-common/src/test/java/org/apache/servicecomb/transport/common/TestTransportConfigUtils.java
+++ 
b/transports/transport-common/src/test/java/org/apache/servicecomb/transport/common/TestTransportConfigUtils.java
@@ -18,25 +18,28 @@ package org.apache.servicecomb.transport.common;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector;
-
-import mockit.Mock;
-import mockit.MockUp;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
+
+import mockit.Mock;
+import mockit.MockUp;
 
 public class TestTransportConfigUtils {
+  Environment environment = Mockito.mock(Environment.class);
+
   @BeforeEach
   public void setup() {
-    ArchaiusUtils.resetConfig();
+    LegacyPropertyFactory.setEnvironment(environment);
   }
 
   @AfterAll
   public static void teardown() {
-    ArchaiusUtils.resetConfig();
   }
 
   static String key = "verticle-count";
@@ -45,15 +48,14 @@ public class TestTransportConfigUtils {
 
   @Test
   public void readVerticleCount_new_exist() {
-    ArchaiusUtils.setProperty(key, 10);
-
+    Mockito.when(environment.getProperty("verticle-count", int.class, 
-1)).thenReturn(10);
     Assertions.assertEquals(10, TransportConfigUtils.readVerticleCount(key, 
deprecatedKey));
   }
 
   @Test
   public void readVerticleCount_old_exist() {
-    ArchaiusUtils.setProperty(deprecatedKey, 10);
-
+    Mockito.when(environment.getProperty("verticle-count", int.class, 
-1)).thenReturn(-1);
+    Mockito.when(environment.getProperty("thread-count", int.class, 
-1)).thenReturn(10);
     LogCollector collector = new LogCollector();
     Assertions.assertEquals(10, TransportConfigUtils.readVerticleCount(key, 
deprecatedKey));
     Assertions.assertEquals("thread-count is ambiguous, and deprecated, 
recommended to use verticle-count.",
@@ -63,6 +65,9 @@ public class TestTransportConfigUtils {
 
   @Test
   public void readVerticleCount_default_smallCpu() {
+    Mockito.when(environment.getProperty("verticle-count", int.class, 
-1)).thenReturn(-1);
+    Mockito.when(environment.getProperty("thread-count", int.class, 
-1)).thenReturn(-1);
+
     new MockUp<Runtime>() {
       @Mock
       int availableProcessors() {
@@ -79,6 +84,9 @@ public class TestTransportConfigUtils {
 
   @Test
   public void readVerticleCount_default_bigCpu() {
+    Mockito.when(environment.getProperty("verticle-count", int.class, 
-1)).thenReturn(-1);
+    Mockito.when(environment.getProperty("thread-count", int.class, 
-1)).thenReturn(-1);
+
     AtomicInteger count = new AtomicInteger(8);
     new MockUp<Runtime>() {
       @Mock
diff --git 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClient.java
 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClient.java
index e15124dbb..122be005e 100644
--- 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClient.java
+++ 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClient.java
@@ -19,11 +19,9 @@ package org.apache.servicecomb.transport.highway;
 
 import java.util.concurrent.TimeoutException;
 
-import jakarta.ws.rs.core.Response.Status;
-
-import com.google.common.annotations.VisibleForTesting;
 import org.apache.servicecomb.codec.protobuf.definition.OperationProtobuf;
 import org.apache.servicecomb.codec.protobuf.definition.ProtobufManager;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.foundation.ssl.SSLCustom;
 import org.apache.servicecomb.foundation.ssl.SSLOption;
@@ -40,10 +38,11 @@ import 
org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.netflix.config.DynamicPropertyFactory;
+import com.google.common.annotations.VisibleForTesting;
 
 import io.vertx.core.DeploymentOptions;
 import io.vertx.core.Vertx;
+import jakarta.ws.rs.core.Response.Status;
 
 public class HighwayClient {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(HighwayClient.class);
@@ -70,8 +69,8 @@ public class HighwayClient {
   TcpClientConfig createTcpClientConfig() {
     TcpClientConfig tcpClientConfig = new TcpClientConfig();
     // global request timeout to be login timeout
-    tcpClientConfig.setMsLoginTimeout(DynamicPropertyFactory.getInstance()
-        .getLongProperty("servicecomb.request.timeout", 
TcpClientConfig.DEFAULT_LOGIN_TIMEOUT).get());
+    tcpClientConfig.setMsLoginTimeout(
+        LegacyPropertyFactory.getLongProperty("servicecomb.request.timeout", 
TcpClientConfig.DEFAULT_LOGIN_TIMEOUT));
 
     SSLOptionFactory factory =
         SSLOptionFactory.createSSLOptionFactory(SSL_KEY, null);
diff --git 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayConfig.java
 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayConfig.java
index 7122fa508..0148cfbfe 100644
--- 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayConfig.java
+++ 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayConfig.java
@@ -17,19 +17,15 @@
 
 package org.apache.servicecomb.transport.highway;
 
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.transport.common.TransportConfigUtils;
 
-import com.netflix.config.DynamicPropertyFactory;
-import com.netflix.config.DynamicStringProperty;
-
 public final class HighwayConfig {
   private HighwayConfig() {
   }
 
   public static String getAddress() {
-    DynamicStringProperty address =
-        
DynamicPropertyFactory.getInstance().getStringProperty("servicecomb.highway.address",
 null);
-    return address.get();
+    return 
LegacyPropertyFactory.getStringProperty("servicecomb.highway.address", null);
   }
 
   public static int getServerThreadCount() {
diff --git 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServer.java
 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServer.java
index 08956df6a..9224c6ac2 100644
--- 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServer.java
+++ 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServer.java
@@ -17,13 +17,12 @@
 
 package org.apache.servicecomb.transport.highway;
 
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
 import org.apache.servicecomb.foundation.vertx.server.TcpServer;
 import org.apache.servicecomb.foundation.vertx.server.TcpServerConnection;
 
-import com.netflix.config.DynamicPropertyFactory;
-
 public class HighwayServer extends TcpServer {
   private final Endpoint endpoint;
 
@@ -39,7 +38,6 @@ public class HighwayServer extends TcpServer {
 
   @Override
   protected int getConnectionLimit() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.highway.server.connection-limit", 
Integer.MAX_VALUE).get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.highway.server.connection-limit",
 Integer.MAX_VALUE);
   }
 }
diff --git 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayClient.java
 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayClient.java
index 1c71f1c41..999688a16 100644
--- 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayClient.java
+++ 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayClient.java
@@ -17,10 +17,9 @@
 
 package org.apache.servicecomb.transport.highway;
 
-import jakarta.ws.rs.core.Response.Status;
-
 import org.apache.servicecomb.codec.protobuf.definition.OperationProtobuf;
 import org.apache.servicecomb.codec.protobuf.definition.ProtobufManager;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.definition.OperationConfig;
@@ -28,7 +27,6 @@ import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.executor.ReactiveExecutor;
 import org.apache.servicecomb.core.invocation.InvocationStageTrace;
 import org.apache.servicecomb.foundation.common.Holder;
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.foundation.vertx.client.ClientPoolManager;
 import 
org.apache.servicecomb.foundation.vertx.client.tcp.AbstractTcpClientPackage;
@@ -38,15 +36,18 @@ import 
org.apache.servicecomb.foundation.vertx.client.tcp.TcpResponseCallback;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.junit.AfterClass;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 import io.vertx.core.AbstractVerticle;
 import io.vertx.core.DeploymentOptions;
 import io.vertx.core.Vertx;
 import io.vertx.core.buffer.Buffer;
+import jakarta.ws.rs.core.Response.Status;
 import mockit.Deencapsulation;
 import mockit.Mock;
 import mockit.MockUp;
@@ -67,13 +68,12 @@ public class TestHighwayClient {
 
   Endpoint endpoint = Mockito.mock(Endpoint.class);
 
+  Environment environment = Mockito.mock(Environment.class);
+
   static long nanoTime = 123;
 
   @BeforeClass
   public static void setup() {
-    ArchaiusUtils.resetConfig();
-    ArchaiusUtils.setProperty(REQUEST_TIMEOUT_KEY, 2000);
-
     new MockUp<System>() {
       @Mock
       long nanoTime() {
@@ -84,7 +84,22 @@ public class TestHighwayClient {
 
   @AfterClass
   public static void teardown() {
-    ArchaiusUtils.resetConfig();
+
+  }
+
+  @Before
+  public void setUp() {
+    LegacyPropertyFactory.setEnvironment(environment);
+    Mockito.when(environment.getProperty(REQUEST_TIMEOUT_KEY, long.class, 
(long) TcpClientConfig.DEFAULT_LOGIN_TIMEOUT))
+        .thenReturn((long) 2000);
+    
Mockito.when(environment.getProperty("servicecomb.highway.client.verticle-count",
 int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.highway.client.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.highway.server.verticle-count",
 int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.highway.server.thread-count", 
int.class, -1))
+        .thenReturn(-1);
   }
 
   @Test
diff --git 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayConfig.java
 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayConfig.java
deleted file mode 100644
index 90fb5fd60..000000000
--- 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayConfig.java
+++ /dev/null
@@ -1,53 +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.transport.highway;
-
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.jupiter.api.Assertions;
-
-public class TestHighwayConfig {
-  @BeforeClass
-  public static void setup() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @AfterClass
-  public static void tearDown() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @Test
-  public void getServerThreadCount() {
-    ArchaiusUtils.setProperty("servicecomb.highway.server.verticle-count", 1);
-    Assertions.assertEquals(HighwayConfig.getServerThreadCount(), 1);
-  }
-
-  @Test
-  public void getClientThreadCount() {
-    ArchaiusUtils.setProperty("servicecomb.highway.client.verticle-count", 1);
-    Assertions.assertEquals(HighwayConfig.getClientThreadCount(), 1);
-  }
-
-  @Test
-  public void getAddress() {
-    Assertions.assertNull(HighwayConfig.getAddress());
-  }
-}
diff --git 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayTransport.java
 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayTransport.java
index 4aae882ab..263d2e264 100644
--- 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayTransport.java
+++ 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayTransport.java
@@ -19,24 +19,30 @@ package org.apache.servicecomb.transport.highway;
 
 import org.apache.servicecomb.codec.protobuf.definition.OperationProtobuf;
 import org.apache.servicecomb.codec.protobuf.definition.RequestRootSerializer;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
+import org.apache.servicecomb.foundation.vertx.client.tcp.TcpClientConfig;
 import org.junit.AfterClass;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.mockito.Mockito;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.core.env.Environment;
 
 public class TestHighwayTransport {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TestHighwayTransport.class);
 
   private final HighwayTransport transport = new HighwayTransport();
 
+  Environment environment = Mockito.mock(Environment.class);
+
   @BeforeClass
   public static void setup() {
     VertxUtils.blockCloseVertxByName("transport");
@@ -49,6 +55,22 @@ public class TestHighwayTransport {
     Thread.getAllStackTraces().keySet().forEach(t -> LOGGER.info("after: {}", 
t.getName()));
   }
 
+  @Before
+  public void setUp() {
+    Mockito.when(environment.getProperty(
+            "servicecomb.request.timeout", long.class, (long) 
TcpClientConfig.DEFAULT_LOGIN_TIMEOUT))
+        .thenReturn((long) TcpClientConfig.DEFAULT_LOGIN_TIMEOUT);
+    
Mockito.when(environment.getProperty("servicecomb.highway.client.verticle-count",
 int.class, -1))
+            .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.highway.client.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.highway.server.verticle-count",
 int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.highway.server.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    LegacyPropertyFactory.setEnvironment(environment);
+  }
+
   @Test
   public void testGetInstance() {
     Assertions.assertNotNull(transport);
@@ -60,6 +82,7 @@ public class TestHighwayTransport {
     try {
       transport.init();
     } catch (Exception e) {
+      e.printStackTrace();
       status = false;
     }
 
diff --git 
a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
 
b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
index 542955859..a371a8bc6 100644
--- 
a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
+++ 
b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
@@ -17,10 +17,9 @@
 
 package org.apache.servicecomb.transport.rest.client;
 
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.transport.common.TransportConfigUtils;
 
-import com.netflix.config.DynamicPropertyFactory;
-
 import io.vertx.core.http.HttpClientOptions;
 
 public final class TransportClientConfig {
@@ -38,98 +37,80 @@ public final class TransportClientConfig {
   }
 
   public static int getHttp2ConnectionMaxPoolSize() {
-    return 
DynamicPropertyFactory.getInstance().getIntProperty("servicecomb.rest.client.http2.maxPoolSize",
-            HttpClientOptions.DEFAULT_HTTP2_MAX_POOL_SIZE)
-        .get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.client.http2.maxPoolSize",
+        HttpClientOptions.DEFAULT_HTTP2_MAX_POOL_SIZE);
   }
 
   public static int getHttp2MultiplexingLimit() {
-    return 
DynamicPropertyFactory.getInstance().getIntProperty("servicecomb.rest.client.http2.multiplexingLimit",
-            HttpClientOptions.DEFAULT_HTTP2_MULTIPLEXING_LIMIT)
-        .get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.client.http2.multiplexingLimit",
+        HttpClientOptions.DEFAULT_HTTP2_MULTIPLEXING_LIMIT);
   }
 
   public static boolean getUseAlpn() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty("servicecomb.rest.client.http2.useAlpnEnabled", 
true)
-        .get();
+    return 
LegacyPropertyFactory.getBooleanProperty("servicecomb.rest.client.http2.useAlpnEnabled",
 true);
   }
 
   public static boolean isHttp2TransportClientEnabled() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty("servicecomb.rest.client.http2.enabled",
-            true)
-        .get();
+    return 
LegacyPropertyFactory.getBooleanProperty("servicecomb.rest.client.http2.enabled",
+        true);
   }
 
   public static int getConnectionMaxPoolSize() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.client.connection.maxPoolSize", 
HttpClientOptions.DEFAULT_MAX_POOL_SIZE)
-        .get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.client.connection.maxPoolSize",
+        HttpClientOptions.DEFAULT_MAX_POOL_SIZE);
   }
 
   public static int getHttp2ConnectionIdleTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
-        
.getIntProperty("servicecomb.rest.client.http2.connection.idleTimeoutInSeconds",
 DEFAULT_IDLE_TIME_OUT)
-        .get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.client.http2.connection.idleTimeoutInSeconds",
+        DEFAULT_IDLE_TIME_OUT);
   }
 
   public static int getConnectionIdleTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
-        
.getIntProperty("servicecomb.rest.client.connection.idleTimeoutInSeconds", 
DEFAULT_IDLE_TIME_OUT)
-        .get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.client.connection.idleTimeoutInSeconds",
+        DEFAULT_IDLE_TIME_OUT);
   }
 
   public static boolean getConnectionKeepAlive() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty("servicecomb.rest.client.connection.keepAlive", 
HttpClientOptions.DEFAULT_KEEP_ALIVE)
-        .get();
+    return LegacyPropertyFactory
+        .getBooleanProperty("servicecomb.rest.client.connection.keepAlive", 
HttpClientOptions.DEFAULT_KEEP_ALIVE);
   }
 
   public static int getConnectionKeepAliveTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
-        
.getIntProperty("servicecomb.rest.client.connection.keepAliveTimeoutInSeconds",
-            DEFAULT_KEEP_ALIVE_TIME_OUT)
-        .get();
+    return LegacyPropertyFactory
+        
.getIntProperty("servicecomb.rest.client.connection.keepAliveTimeoutInSeconds", 
DEFAULT_KEEP_ALIVE_TIME_OUT);
   }
 
   public static int getHttp2ConnectionKeepAliveTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         
.getIntProperty("servicecomb.rest.client.http2.connection.keepAliveTimeoutInSeconds",
-            DEFAULT_KEEP_ALIVE_TIME_OUT)
-        .get();
+            DEFAULT_KEEP_ALIVE_TIME_OUT);
   }
 
   public static boolean getConnectionCompression() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getBooleanProperty("servicecomb.rest.client.connection.compression",
-            HttpClientOptions.DEFAULT_TRY_USE_COMPRESSION)
-        .get();
+            HttpClientOptions.DEFAULT_TRY_USE_COMPRESSION);
   }
 
   public static int getMaxHeaderSize() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.client.maxHeaderSize", 
HttpClientOptions.DEFAULT_MAX_HEADER_SIZE)
-        .get();
+    return LegacyPropertyFactory
+        .getIntProperty("servicecomb.rest.client.maxHeaderSize", 
HttpClientOptions.DEFAULT_MAX_HEADER_SIZE);
   }
 
   public static int getMaxWaitQueueSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.client.maxWaitQueueSize",
-            HttpClientOptions.DEFAULT_MAX_WAIT_QUEUE_SIZE)
-        .get();
+            HttpClientOptions.DEFAULT_MAX_WAIT_QUEUE_SIZE);
   }
 
   public static boolean isHttpTransportClientEnabled() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getBooleanProperty("servicecomb.rest.client.enabled",
-            true)
-        .get();
+            true);
   }
 
   public static int getConnectionTimeoutInMillis() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.client.connection.timeoutInMillis", 
1000)
-        .get();
+    return LegacyPropertyFactory
+        .getIntProperty("servicecomb.rest.client.connection.timeoutInMillis", 
1000);
   }
 }
diff --git 
a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
 
b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
deleted file mode 100644
index 4409e2979..000000000
--- 
a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
+++ /dev/null
@@ -1,97 +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.transport.rest.client;
-
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class TestTransportClientConfig {
-
-  @BeforeEach
-  public void before() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @AfterEach
-  public void after() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @Test
-  public void getThreadCount() {
-    ArchaiusUtils.setProperty("servicecomb.rest.client.verticle-count", 1);
-    Assertions.assertEquals(1, TransportClientConfig.getThreadCount());
-  }
-
-  @Test
-  public void getConnectionMaxPoolSize() {
-    Assertions.assertEquals(5, 
TransportClientConfig.getConnectionMaxPoolSize());
-  }
-
-  @Test
-  public void getConnectionIdleTimeoutInSeconds() {
-    Assertions.assertEquals(150, 
TransportClientConfig.getConnectionIdleTimeoutInSeconds());
-  }
-
-  @Test
-  public void getHttp2MultiplexingLimit() {
-    Assertions.assertEquals(-1, 
TransportClientConfig.getHttp2MultiplexingLimit());
-  }
-
-  @Test
-  public void getHttp2ConnectionMaxPoolSize() {
-    Assertions.assertEquals(1, 
TransportClientConfig.getHttp2ConnectionMaxPoolSize());
-  }
-
-  @Test
-  public void getHttp2ConnectionIdleTimeoutInSeconds() {
-    Assertions.assertEquals(150, 
TransportClientConfig.getHttp2ConnectionIdleTimeoutInSeconds());
-  }
-
-  @Test
-  public void getUseAlpnEnabled() {
-    Assertions.assertTrue(TransportClientConfig.getUseAlpn());
-  }
-
-  @Test
-  public void getConnectionKeepAlive() {
-    Assertions.assertTrue(TransportClientConfig.getConnectionKeepAlive());
-  }
-
-  @Test
-  public void getConnectionCompression() {
-    Assertions.assertFalse(TransportClientConfig.getConnectionCompression());
-  }
-
-  @Test
-  public void getMaxHeaderSize() {
-    Assertions.assertEquals(8192, TransportClientConfig.getMaxHeaderSize());
-    ArchaiusUtils.setProperty("servicecomb.rest.client.maxHeaderSize", 1024);
-    Assertions.assertEquals(1024, TransportClientConfig.getMaxHeaderSize());
-  }
-
-  @Test
-  public void getMaxWaitQueueSize() {
-    Assertions.assertEquals(-1, TransportClientConfig.getMaxWaitQueueSize());
-    ArchaiusUtils.setProperty("servicecomb.rest.client.maxWaitQueueSize", 
1024);
-    Assertions.assertEquals(1024, TransportClientConfig.getMaxWaitQueueSize());
-  }
-}
diff --git 
a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletConfig.java
 
b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletConfig.java
index 9993a3dfb..8c5934c04 100644
--- 
a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletConfig.java
+++ 
b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletConfig.java
@@ -17,9 +17,7 @@
 
 package org.apache.servicecomb.transport.rest.servlet;
 
-import com.netflix.config.DynamicLongProperty;
-import com.netflix.config.DynamicPropertyFactory;
-import com.netflix.config.DynamicStringProperty;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 
 public final class ServletConfig {
   public static final long DEFAULT_ASYN_SERVLET_TIMEOUT = -1;
@@ -32,26 +30,19 @@ public final class ServletConfig {
 
   public static final String DEFAULT_URL_PATTERN = "/*";
 
-  private static final DynamicLongProperty asyncServletTimeoutProperty =
-      
DynamicPropertyFactory.getInstance().getLongProperty(KEY_SERVICECOMB_ASYC_SERVLET_TIMEOUT,
-          DEFAULT_ASYN_SERVLET_TIMEOUT);
-
   private ServletConfig() {
   }
 
   public static long getAsyncServletTimeout() {
-    return asyncServletTimeoutProperty.get();
+    return 
LegacyPropertyFactory.getLongProperty(KEY_SERVICECOMB_ASYC_SERVLET_TIMEOUT,
+        DEFAULT_ASYN_SERVLET_TIMEOUT);
   }
 
   public static String getLocalServerAddress() {
-    DynamicStringProperty address =
-        
DynamicPropertyFactory.getInstance().getStringProperty(SERVICECOMB_REST_ADDRESS,
 null);
-    return address.get();
+    return LegacyPropertyFactory.getStringProperty(SERVICECOMB_REST_ADDRESS, 
null);
   }
 
   public static String getServletUrlPattern() {
-    DynamicStringProperty address =
-        
DynamicPropertyFactory.getInstance().getStringProperty(KEY_SERVLET_URL_PATTERN, 
null);
-    return address.get();
+    return LegacyPropertyFactory.getStringProperty(KEY_SERVLET_URL_PATTERN, 
null);
   }
 }
diff --git 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletConfig.java
 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletConfig.java
deleted file mode 100644
index f269c30e6..000000000
--- 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletConfig.java
+++ /dev/null
@@ -1,57 +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.transport.rest.servlet;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.netflix.config.DynamicPropertyFactory;
-import org.junit.jupiter.api.Assertions;
-
-public class TestServletConfig {
-  @BeforeClass
-  public static void classSetup() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @AfterClass
-  public static void classTeardown() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @Test
-  public void testGetLocalServerAddress() {
-    Assertions.assertNull(ServletConfig.getLocalServerAddress());
-  }
-
-  @Test
-  public void testGetServerTimeout() {
-    Assertions.assertEquals(ServletConfig.DEFAULT_ASYN_SERVLET_TIMEOUT, 
ServletConfig.getAsyncServletTimeout());
-  }
-
-  @Test
-  public void testGetServletUrlPattern() {
-    DynamicPropertyFactory.getInstance();
-    Configuration configuration = (Configuration) 
DynamicPropertyFactory.getBackingConfigurationSource();
-    configuration.setProperty(ServletConfig.KEY_SERVLET_URL_PATTERN, "/*");
-    Assertions.assertEquals("/*", ServletConfig.getServletUrlPattern());
-  }
-}
diff --git 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletRestTransport.java
 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletRestTransport.java
index 93fdb0931..50169fa67 100644
--- 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletRestTransport.java
+++ 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletRestTransport.java
@@ -17,20 +17,36 @@
 
 package org.apache.servicecomb.transport.rest.servlet;
 
+import static 
org.apache.servicecomb.core.transport.AbstractTransport.PUBLISH_ADDRESS;
+
 import java.io.IOException;
 import java.net.ServerSocket;
 
 import org.apache.servicecomb.foundation.common.utils.ClassLoaderScopeContext;
 import org.apache.servicecomb.registry.definition.DefinitionConst;
 import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
+import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 import mockit.Expectations;
 
 public class TestServletRestTransport {
   ServletRestTransport transport = new ServletRestTransport();
 
+  Environment environment = Mockito.mock(Environment.class);
+
+  @Before
+  public void setUp() {
+    Mockito.when(environment.getProperty(PUBLISH_ADDRESS, String.class, ""))
+        .thenReturn("");
+    Mockito.when(environment.getProperty("servicecomb.rest.publishPort", 
int.class, 0))
+            .thenReturn(0);
+    transport.setEnvironment(environment);
+  }
+
   @After
   public void tearDown() {
     ClassLoaderScopeContext.clearClassLoaderScopeProperty();
diff --git 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletUtils.java
 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletUtils.java
index 8b77dd7e1..febed525e 100644
--- 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletUtils.java
+++ 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestServletUtils.java
@@ -29,38 +29,44 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import jakarta.servlet.MultipartConfigElement;
-import jakarta.servlet.ServletContext;
-import jakarta.servlet.ServletRegistration;
-import jakarta.servlet.ServletRegistration.Dynamic;
-import jakarta.servlet.http.HttpServlet;
-
 import org.apache.servicecomb.common.rest.RestConst;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import 
org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
 import org.apache.servicecomb.foundation.common.utils.ClassLoaderScopeContext;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.registry.definition.DefinitionConst;
 import org.hamcrest.MatcherAssert;
 import org.hamcrest.Matchers;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
+import jakarta.servlet.MultipartConfigElement;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletRegistration.Dynamic;
+import jakarta.servlet.http.HttpServlet;
 import mockit.Expectations;
 import mockit.Mock;
 import mockit.MockUp;
 import mockit.Mocked;
-import org.junit.jupiter.api.Assertions;
 
 public class TestServletUtils {
+  Environment environment = Mockito.mock(Environment.class);
+
   @Before
   public void setUp() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @After
-  public void tearDown() {
-    ArchaiusUtils.resetConfig();
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_DIR, String.class, 
RestConst.UPLOAD_DEFAULT_DIR))
+        .thenReturn(RestConst.UPLOAD_DEFAULT_DIR);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_MAX_FILE_SIZE, 
long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_MAX_SIZE, 
long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD, 
int.class, 0))
+        .thenReturn(0);
+    LegacyPropertyFactory.setEnvironment(environment);
   }
 
   @Test
@@ -283,7 +289,8 @@ public class TestServletUtils {
 
     File tempDir = Files.createTempDirectory("temp").toFile();
     File uploadDir = new File(tempDir, "upload");
-    ArchaiusUtils.setProperty(RestConst.UPLOAD_DIR, 
uploadDir.getAbsolutePath());
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_DIR, String.class, 
RestConst.UPLOAD_DEFAULT_DIR))
+        .thenReturn(uploadDir.getAbsolutePath());
 
     ServletUtils.setServletParameters(servletContext);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
index 1c6120f61..ecc0e175d 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
@@ -21,12 +21,10 @@ import java.nio.channels.ClosedChannelException;
 import java.util.List;
 import java.util.Set;
 
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-
 import org.apache.servicecomb.common.accessLog.AccessLogConfig;
 import 
org.apache.servicecomb.common.accessLog.core.element.impl.LocalHostAccessItem;
 import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.event.ServerAccessLogEvent;
 import org.apache.servicecomb.core.transport.AbstractTransport;
@@ -46,7 +44,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.core.AbstractVerticle;
 import io.vertx.core.Context;
@@ -62,6 +59,8 @@ import io.vertx.core.net.impl.ConnectionBase;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
 import io.vertx.ext.web.handler.CorsHandler;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
 
 public class RestServerVerticle extends AbstractVerticle {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(RestServerVerticle.class);
@@ -100,8 +99,8 @@ public class RestServerVerticle extends AbstractVerticle {
         DefaultHttpServerMetrics serverMetrics = (DefaultHttpServerMetrics) 
((ConnectionBase) connection).metrics();
         DefaultServerEndpointMetric endpointMetric = 
serverMetrics.getEndpointMetric();
         long connectedCount = endpointMetric.getCurrentConnectionCount();
-        int connectionLimit = DynamicPropertyFactory.getInstance()
-            .getIntProperty("servicecomb.rest.server.connection-limit", 
Integer.MAX_VALUE).get();
+        int connectionLimit = 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.server.connection-limit",
+            Integer.MAX_VALUE);
         if (connectedCount > connectionLimit) {
           connection.close();
           endpointMetric.onRejectByConnectionLimit();
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
index 6e7f229b0..59308280c 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
@@ -22,11 +22,9 @@ import java.util.Set;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.transport.common.TransportConfigUtils;
 
-import com.netflix.config.DynamicPropertyFactory;
-import com.netflix.config.DynamicStringProperty;
-
 import io.vertx.core.Verticle;
 import io.vertx.core.http.Http2Settings;
 import io.vertx.core.http.HttpServerOptions;
@@ -55,39 +53,35 @@ public final class TransportConfig {
   }
 
   public static String getAddress() {
-    DynamicStringProperty address =
-        
DynamicPropertyFactory.getInstance().getStringProperty("servicecomb.rest.address",
 null);
-    return address.get();
+    return LegacyPropertyFactory.getStringProperty("servicecomb.rest.address", 
null);
   }
 
   public static int getMaxFormAttributeSize() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.server.maxFormAttributeSize",
-            HttpServerOptions.DEFAULT_MAX_FORM_ATTRIBUTE_SIZE).get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.server.maxFormAttributeSize",
+        HttpServerOptions.DEFAULT_MAX_FORM_ATTRIBUTE_SIZE);
   }
 
   public static int getCompressionLevel() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.server.compressionLevel",
-            HttpServerOptions.DEFAULT_COMPRESSION_LEVEL).get();
+    return 
LegacyPropertyFactory.getIntProperty("servicecomb.rest.server.compressionLevel",
+        HttpServerOptions.DEFAULT_COMPRESSION_LEVEL);
   }
 
   public static int getMaxChunkSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.maxChunkSize",
-            HttpServerOptions.DEFAULT_MAX_CHUNK_SIZE).get();
+            HttpServerOptions.DEFAULT_MAX_CHUNK_SIZE);
   }
 
   public static int getDecoderInitialBufferSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.decoderInitialBufferSize",
-            HttpServerOptions.DEFAULT_DECODER_INITIAL_BUFFER_SIZE).get();
+            HttpServerOptions.DEFAULT_DECODER_INITIAL_BUFFER_SIZE);
   }
 
   public static int getHttp2ConnectionWindowSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.http2ConnectionWindowSize",
-            HttpServerOptions.DEFAULT_HTTP2_CONNECTION_WINDOW_SIZE).get();
+            HttpServerOptions.DEFAULT_HTTP2_CONNECTION_WINDOW_SIZE);
   }
 
   public static int getThreadCount() {
@@ -97,122 +91,111 @@ public final class TransportConfig {
   }
 
   public static int getConnectionIdleTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         
.getIntProperty("servicecomb.rest.server.connection.idleTimeoutInSeconds",
             DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND)
-        .get();
+        ;
   }
 
   public static int getHttp2ConnectionIdleTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         
.getIntProperty("servicecomb.rest.server.http2.connection.idleTimeoutInSeconds",
-            DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND)
-        .get();
+            DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND);
   }
 
   public static boolean getCompressed() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty("servicecomb.rest.server.compression", 
DEFAULT_SERVER_COMPRESSION_SUPPORT)
-        .get();
+    return LegacyPropertyFactory
+        .getBooleanProperty("servicecomb.rest.server.compression", 
DEFAULT_SERVER_COMPRESSION_SUPPORT);
   }
 
   public static boolean getDecompressionSupported() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getBooleanProperty("servicecomb.rest.server.decompressionSupported",
-            HttpServerOptions.DEFAULT_DECOMPRESSION_SUPPORTED).get();
+            HttpServerOptions.DEFAULT_DECOMPRESSION_SUPPORTED);
   }
 
   public static long getMaxConcurrentStreams() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getLongProperty("servicecomb.rest.server.http2.concurrentStreams",
-            
HttpServerOptions.DEFAULT_INITIAL_SETTINGS_MAX_CONCURRENT_STREAMS).get();
+            HttpServerOptions.DEFAULT_INITIAL_SETTINGS_MAX_CONCURRENT_STREAMS);
   }
 
   public static long getHttp2HeaderTableSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getLongProperty("servicecomb.rest.server.http2.HeaderTableSize",
-            Http2Settings.DEFAULT_HEADER_TABLE_SIZE).get();
+            Http2Settings.DEFAULT_HEADER_TABLE_SIZE);
   }
 
   public static boolean getPushEnabled() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getBooleanProperty("servicecomb.rest.server.http2.pushEnabled",
-            Http2Settings.DEFAULT_ENABLE_PUSH).get();
+            Http2Settings.DEFAULT_ENABLE_PUSH);
   }
 
   public static int getInitialWindowSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.http2.initialWindowSize",
-            Http2Settings.DEFAULT_INITIAL_WINDOW_SIZE).get();
+            Http2Settings.DEFAULT_INITIAL_WINDOW_SIZE);
   }
 
   public static int getMaxFrameSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.http2.maxFrameSize",
-            Http2Settings.DEFAULT_MAX_FRAME_SIZE).get();
+            Http2Settings.DEFAULT_MAX_FRAME_SIZE);
   }
 
   public static int getMaxHeaderListSize() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.http2.maxHeaderListSize",
-            Http2Settings.DEFAULT_MAX_HEADER_LIST_SIZE).get();
+            Http2Settings.DEFAULT_MAX_HEADER_LIST_SIZE);
   }
 
   public static boolean getUseAlpn() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty("servicecomb.rest.server.http2.useAlpnEnabled", 
true)
-        .get();
+    return LegacyPropertyFactory
+        .getBooleanProperty("servicecomb.rest.server.http2.useAlpnEnabled", 
true);
   }
 
   public static int getMaxHeaderSize() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.server.maxHeaderSize", 
DEFAULT_SERVER_MAX_HEADER_SIZE)
-        .get();
+    return LegacyPropertyFactory
+        .getIntProperty("servicecomb.rest.server.maxHeaderSize", 
DEFAULT_SERVER_MAX_HEADER_SIZE);
   }
 
   public static boolean isCorsEnabled() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty(SERVICECOMB_CORS_CONFIG_BASE + ".enabled", false)
-        .get();
+    return LegacyPropertyFactory
+        .getBooleanProperty(SERVICECOMB_CORS_CONFIG_BASE + ".enabled", false);
   }
 
   public static String getCorsAllowedOrigin() {
-    return DynamicPropertyFactory.getInstance()
-        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".origin", "*")
-        .get();
+    return LegacyPropertyFactory
+        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".origin", "*");
   }
 
   public static boolean isCorsAllowCredentials() {
-    return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty(SERVICECOMB_CORS_CONFIG_BASE + 
".allowCredentials", false)
-        .get();
+    return LegacyPropertyFactory
+        .getBooleanProperty(SERVICECOMB_CORS_CONFIG_BASE + 
".allowCredentials", false);
   }
 
   public static Set<String> getCorsAllowedHeaders() {
-    String allowedHeaders = DynamicPropertyFactory.getInstance()
-        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".allowedHeader", 
null)
-        .get();
+    String allowedHeaders = LegacyPropertyFactory
+        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".allowedHeader");
     return convertToSet(allowedHeaders);
   }
 
   public static Set<String> getCorsAllowedMethods() {
-    String allowedMethods = DynamicPropertyFactory.getInstance()
-        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".allowedMethod", 
null)
-        .get();
+    String allowedMethods = LegacyPropertyFactory
+        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".allowedMethod");
     return convertToSet(allowedMethods);
   }
 
   public static Set<String> getCorsExposedHeaders() {
-    String exposedHeaders = DynamicPropertyFactory.getInstance()
-        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".exposedHeader", 
null)
-        .get();
+    String exposedHeaders = LegacyPropertyFactory
+        .getStringProperty(SERVICECOMB_CORS_CONFIG_BASE + ".exposedHeader");
     return convertToSet(exposedHeaders);
   }
 
   public static int getCorsMaxAge() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty(SERVICECOMB_CORS_CONFIG_BASE + ".maxAge", -1)
-        .get();
+    return LegacyPropertyFactory
+        .getIntProperty(SERVICECOMB_CORS_CONFIG_BASE + ".maxAge", -1);
   }
 
   private static Set<String> convertToSet(String setString) {
@@ -226,9 +209,8 @@ public final class TransportConfig {
   }
 
   public static int getMaxInitialLineLength() {
-    return DynamicPropertyFactory.getInstance()
+    return LegacyPropertyFactory
         .getIntProperty("servicecomb.rest.server.maxInitialLineLength",
-            HttpServerOptions.DEFAULT_MAX_INITIAL_LINE_LENGTH)
-        .get();
+            HttpServerOptions.DEFAULT_MAX_INITIAL_LINE_LENGTH);
   }
 }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
index cd2c14d98..abce41bf5 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
@@ -17,13 +17,9 @@
 
 package org.apache.servicecomb.transport.rest.vertx;
 
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response.Status;
-import jakarta.ws.rs.core.Response.Status.Family;
-
 import org.apache.servicecomb.common.rest.RestProducerInvocationFlow;
 import org.apache.servicecomb.common.rest.RestVertxProducerInvocationCreator;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.CoreConst;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
@@ -37,12 +33,14 @@ import 
org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.netflix.config.DynamicPropertyFactory;
-
 import 
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.ErrorDataDecoderException;
 import io.vertx.core.json.JsonObject;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.Response.Status.Family;
 
 public class VertxRestDispatcher extends AbstractVertxHttpDispatcher {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(VertxRestDispatcher.class);
@@ -59,18 +57,18 @@ public class VertxRestDispatcher extends 
AbstractVertxHttpDispatcher {
 
   @Override
   public int getOrder() {
-    return DynamicPropertyFactory.getInstance().getIntProperty(KEY_ORDER, 
Integer.MAX_VALUE).get();
+    return LegacyPropertyFactory.getIntProperty(KEY_ORDER, Integer.MAX_VALUE);
   }
 
   @Override
   public boolean enabled() {
-    return 
DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, 
true).get();
+    return LegacyPropertyFactory.getBooleanProperty(KEY_ENABLED, true);
   }
 
   @Override
   public void init(Router router) {
     // cookies handler are enabled by default start from 3.8.3
-    String pattern = 
DynamicPropertyFactory.getInstance().getStringProperty(KEY_PATTERN, null).get();
+    String pattern = LegacyPropertyFactory.getStringProperty(KEY_PATTERN);
     if (pattern == null) {
       router.route().handler(createBodyHandler());
       
router.route().failureHandler(this::failureHandler).handler(this::onRequest);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestAbstractVertxHttpDispatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestAbstractVertxHttpDispatcher.java
index b03ae001c..93bececb8 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestAbstractVertxHttpDispatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestAbstractVertxHttpDispatcher.java
@@ -17,17 +17,15 @@
 
 package org.apache.servicecomb.transport.rest.vertx;
 
-import org.apache.commons.configuration.Configuration;
 import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
+import org.junit.Before;
 import org.junit.FixMethodOrder;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.junit.runners.MethodSorters;
-
-import com.netflix.config.DynamicPropertyFactory;
+import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 import io.vertx.ext.web.Router;
 import mockit.Deencapsulation;
@@ -45,21 +43,26 @@ public class TestAbstractVertxHttpDispatcher {
     }
   }
 
-  Configuration config = (Configuration) 
DynamicPropertyFactory.getBackingConfigurationSource();
+  Environment environment = Mockito.mock(Environment.class);
 
-  @BeforeClass
-  public static void setup() {
-    ArchaiusUtils.resetConfig();
-  }
-
-
-  @AfterClass
-  public static void teardown() {
-    ArchaiusUtils.resetConfig();
+  @Before
+  public void setUp() {
+    LegacyPropertyFactory.setEnvironment(environment);
+    Mockito.when(environment.getProperty(
+            RestConst.UPLOAD_MAX_SIZE, long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_MAX_FILE_SIZE, 
long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD, 
int.class, 0))
+        .thenReturn(0);
   }
 
   @Test
   public void createBodyHandlerUploadDefault() {
+    Mockito.when(environment.getProperty(
+            "servicecomb.uploads.directory", String.class, 
RestConst.UPLOAD_DEFAULT_DIR))
+        .thenReturn(RestConst.UPLOAD_DEFAULT_DIR);
+
     AbstractVertxHttpDispatcher dispatcher = new 
AbstractVertxHttpDispatcherForTest();
     RestBodyHandler bodyHandler = (RestBodyHandler) 
dispatcher.createBodyHandler();
 
@@ -69,7 +72,9 @@ public class TestAbstractVertxHttpDispatcher {
 
   @Test
   public void createBodyHandlerUploadNormal() {
-    config.setProperty("servicecomb.uploads.directory", "/path");
+    Mockito.when(environment.getProperty(
+            "servicecomb.uploads.directory", String.class, 
RestConst.UPLOAD_DEFAULT_DIR))
+        .thenReturn("/path");
 
     AbstractVertxHttpDispatcher dispatcher = new 
AbstractVertxHttpDispatcherForTest();
     RestBodyHandler bodyHandler = (RestBodyHandler) 
dispatcher.createBodyHandler();
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
index 57a6a2ac1..d4c963ee3 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
@@ -17,11 +17,25 @@
 
 package org.apache.servicecomb.transport.rest.vertx;
 
+import static io.vertx.core.http.HttpServerOptions.DEFAULT_COMPRESSION_LEVEL;
+import static 
io.vertx.core.http.HttpServerOptions.DEFAULT_DECODER_INITIAL_BUFFER_SIZE;
+import static 
io.vertx.core.http.HttpServerOptions.DEFAULT_DECOMPRESSION_SUPPORTED;
+import static 
io.vertx.core.http.HttpServerOptions.DEFAULT_HTTP2_CONNECTION_WINDOW_SIZE;
+import static io.vertx.core.http.HttpServerOptions.DEFAULT_MAX_CHUNK_SIZE;
+import static 
io.vertx.core.http.HttpServerOptions.DEFAULT_MAX_FORM_ATTRIBUTE_SIZE;
+import static 
io.vertx.core.http.HttpServerOptions.DEFAULT_MAX_INITIAL_LINE_LENGTH;
+import static 
org.apache.servicecomb.core.transport.AbstractTransport.PUBLISH_ADDRESS;
+import static 
org.apache.servicecomb.transport.rest.vertx.TransportConfig.DEFAULT_SERVER_COMPRESSION_SUPPORT;
+import static 
org.apache.servicecomb.transport.rest.vertx.TransportConfig.DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND;
+import static 
org.apache.servicecomb.transport.rest.vertx.TransportConfig.DEFAULT_SERVER_MAX_HEADER_SIZE;
+import static 
org.apache.servicecomb.transport.rest.vertx.TransportConfig.SERVICECOMB_CORS_CONFIG_BASE;
+
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.servicecomb.config.ConfigUtil;
+import org.apache.servicecomb.common.rest.RestConst;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
@@ -30,6 +44,7 @@ import 
org.apache.servicecomb.core.transport.AbstractTransport;
 import org.apache.servicecomb.foundation.common.Holder;
 import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
+import org.apache.servicecomb.foundation.vertx.client.tcp.TcpClientConfig;
 import org.hamcrest.MatcherAssert;
 import org.hamcrest.Matchers;
 import org.junit.After;
@@ -37,11 +52,13 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 import io.vertx.core.Context;
 import io.vertx.core.Handler;
 import io.vertx.core.Promise;
 import io.vertx.core.Vertx;
+import io.vertx.core.http.Http2Settings;
 import io.vertx.core.http.HttpMethod;
 import io.vertx.core.http.HttpServerResponse;
 import io.vertx.core.json.JsonObject;
@@ -60,9 +77,80 @@ public class TestRestServerVerticle {
 
   Promise<Void> startPromise = null;
 
+  Environment environment = Mockito.mock(Environment.class);
+
   @Before
   public void setUp() {
-    ConfigUtil.installDynamicConfig();
+    Mockito.when(environment.getProperty(
+            "servicecomb.request.timeout", long.class, (long) 
TcpClientConfig.DEFAULT_LOGIN_TIMEOUT))
+        .thenReturn((long) TcpClientConfig.DEFAULT_LOGIN_TIMEOUT);
+    
Mockito.when(environment.getProperty("servicecomb.rest.client.verticle-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.rest.client.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.verticle-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.http.dispatcher.rest.order", 
int.class, Integer.MAX_VALUE))
+        .thenReturn(Integer.MAX_VALUE);
+    Mockito.when(environment.getProperty("servicecomb.rest.publishPort", 
int.class, 0))
+        .thenReturn(0);
+    
Mockito.when(environment.getProperty("servicecomb.http.dispatcher.rest.enabled",
 boolean.class, true))
+        .thenReturn(true);
+    Mockito.when(environment.getProperty(SERVICECOMB_CORS_CONFIG_BASE + 
".enabled", boolean.class, false))
+        .thenReturn(false);
+    Mockito.when(environment.getProperty(PUBLISH_ADDRESS, String.class, ""))
+        .thenReturn("");
+    Mockito.when(environment.getProperty(
+            RestConst.UPLOAD_MAX_SIZE, long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_MAX_FILE_SIZE, 
long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD, 
int.class, 0))
+        .thenReturn(0);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.compression", 
boolean.class,
+            DEFAULT_SERVER_COMPRESSION_SUPPORT))
+        .thenReturn(false);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.maxHeaderSize", 
int.class,
+            DEFAULT_SERVER_MAX_HEADER_SIZE))
+        .thenReturn(DEFAULT_SERVER_MAX_HEADER_SIZE);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.maxFormAttributeSize",
 int.class,
+            DEFAULT_MAX_FORM_ATTRIBUTE_SIZE))
+        .thenReturn(DEFAULT_MAX_FORM_ATTRIBUTE_SIZE);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.compressionLevel",
 int.class,
+            DEFAULT_COMPRESSION_LEVEL))
+        .thenReturn(DEFAULT_COMPRESSION_LEVEL);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.maxChunkSize", 
int.class,
+            DEFAULT_MAX_CHUNK_SIZE))
+        .thenReturn(DEFAULT_MAX_CHUNK_SIZE);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.decompressionSupported",
 boolean.class,
+            DEFAULT_DECOMPRESSION_SUPPORTED))
+        .thenReturn(DEFAULT_DECOMPRESSION_SUPPORTED);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.decoderInitialBufferSize",
 int.class,
+            DEFAULT_DECODER_INITIAL_BUFFER_SIZE))
+        .thenReturn(DEFAULT_DECODER_INITIAL_BUFFER_SIZE);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.maxInitialLineLength",
 int.class,
+            DEFAULT_MAX_INITIAL_LINE_LENGTH))
+        .thenReturn(DEFAULT_MAX_INITIAL_LINE_LENGTH);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.connection.idleTimeoutInSeconds",
 int.class,
+            DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND))
+        .thenReturn(DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.http2.useAlpnEnabled",
 boolean.class,
+            true))
+        .thenReturn(true);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.http2ConnectionWindowSize",
 int.class,
+            DEFAULT_HTTP2_CONNECTION_WINDOW_SIZE))
+        .thenReturn(DEFAULT_HTTP2_CONNECTION_WINDOW_SIZE);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.http2.connection.idleTimeoutInSeconds",
 int.class,
+            DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND))
+        .thenReturn(DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.http2.pushEnabled",
 boolean.class,
+            Http2Settings.DEFAULT_ENABLE_PUSH))
+        .thenReturn(Http2Settings.DEFAULT_ENABLE_PUSH);
+
+    LegacyPropertyFactory.setEnvironment(environment);
+
     instance = new RestServerVerticle();
     startPromise = Promise.promise();
 
@@ -81,6 +169,7 @@ public class TestRestServerVerticle {
   public void testRestServerVerticleWithRouter(@Mocked Transport transport, 
@Mocked Vertx vertx,
       @Mocked Context context,
       @Mocked JsonObject jsonObject, @Mocked Promise<Void> startPromise) 
throws Exception {
+
     URIEndpointObject endpointObject = new 
URIEndpointObject("http://127.0.0.1:8080";);
     new Expectations() {
       {
@@ -131,37 +220,6 @@ public class TestRestServerVerticle {
     server.start(startPromise);
   }
 
-  @Test
-  public void testRestServerVerticleWithHttp2(@Mocked Transport transport, 
@Mocked Vertx vertx,
-      @Mocked Context context,
-      @Mocked JsonObject jsonObject, @Mocked Promise<Void> startPromise) {
-    URIEndpointObject endpointObject = new 
URIEndpointObject("http://127.0.0.1:8080?protocol=http2";);
-    new Expectations() {
-      {
-        transport.parseAddress("http://127.0.0.1:8080?protocol=http2";);
-        result = endpointObject;
-      }
-    };
-    Endpoint endpiont = new Endpoint(transport, 
"http://127.0.0.1:8080?protocol=http2";);
-
-    new Expectations() {
-      {
-        context.config();
-        result = jsonObject;
-        jsonObject.getValue(AbstractTransport.ENDPOINT_KEY);
-        result = endpiont;
-      }
-    };
-    RestServerVerticle server = new RestServerVerticle();
-    boolean status = false;
-    try {
-      server.init(vertx, context);
-      server.start(startPromise);
-    } catch (Exception e) {
-      status = true;
-    }
-    Assertions.assertFalse(status);
-  }
 
   @Test
   public void testStartFutureAddressEmpty() {
@@ -189,11 +247,23 @@ public class TestRestServerVerticle {
 
   @Test
   public void testMountCorsHandler() {
-    ArchaiusUtils.setProperty("servicecomb.cors.enabled", true);
-    ArchaiusUtils.setProperty("servicecomb.cors.allowedMethod", 
"GET,PUT,POST");
-    ArchaiusUtils.setProperty("servicecomb.cors.allowedHeader", "abc,def");
-    ArchaiusUtils.setProperty("servicecomb.cors.exposedHeader", "abc2,def2");
-    ArchaiusUtils.setProperty("servicecomb.cors.maxAge", 1);
+    Mockito.when(environment.getProperty("servicecomb.cors.enabled", 
boolean.class,
+            false))
+        .thenReturn(true);
+    Mockito.when(environment.getProperty("servicecomb.cors.origin", 
String.class,
+            "*"))
+        .thenReturn("*");
+    Mockito.when(environment.getProperty("servicecomb.cors.allowedMethod"))
+        .thenReturn("GET,PUT,POST");
+    Mockito.when(environment.getProperty("servicecomb.cors.allowedHeader"))
+        .thenReturn("abc,def");
+    Mockito.when(environment.getProperty("servicecomb.cors.exposedHeader"))
+        .thenReturn("abc2,def2");
+    Mockito.when(environment.getProperty("servicecomb.cors.maxAge", int.class, 
-1))
+        .thenReturn(1);
+    Mockito.when(environment.getProperty("servicecomb.cors.allowCredentials", 
boolean.class, false))
+        .thenReturn(false);
+
     Set<HttpMethod> methodSet = new HashSet<>(3);
     methodSet.add(HttpMethod.GET);
     methodSet.add(HttpMethod.PUT);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestTransportConfig.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestTransportConfig.java
deleted file mode 100644
index fd1e88d63..000000000
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestTransportConfig.java
+++ /dev/null
@@ -1,237 +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.transport.rest.vertx;
-
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.hamcrest.MatcherAssert;
-import org.hamcrest.Matchers;
-
-import mockit.Mock;
-import mockit.MockUp;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class TestTransportConfig {
-
-  @BeforeEach
-  public void before() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @AfterEach
-  public void after() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @Test
-  public void testGetAddressNull() {
-    Assertions.assertNull(TransportConfig.getAddress());
-  }
-
-  @Test
-  public void testGetAddressNormal() {
-    ArchaiusUtils.setProperty("servicecomb.rest.address", "1.1.1.1");
-    Assertions.assertEquals("1.1.1.1", TransportConfig.getAddress());
-  }
-
-  @Test
-  public void testGetThreadCountNull() {
-    new MockUp<Runtime>() {
-      @Mock
-      int availableProcessors() {
-        return 1;
-      }
-    };
-    Assertions.assertEquals(1, TransportConfig.getThreadCount());
-  }
-
-  @Test
-  public void testGetThreadCountNormal() {
-    ArchaiusUtils.setProperty("servicecomb.rest.server.thread-count", 10);
-    Assertions.assertEquals(10, TransportConfig.getThreadCount());
-  }
-
-  @Test
-  public void testGetCompressedAndHeaderSize() {
-    ArchaiusUtils.setProperty("servicecomb.rest.server.compression", true);
-    Assertions.assertTrue(TransportConfig.getCompressed());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.maxHeaderSize", 2048);
-    Assertions.assertEquals(2048, TransportConfig.getMaxHeaderSize());
-  }
-
-  @Test
-  public void testGetDecompressed() {
-    Assertions.assertFalse(TransportConfig.getDecompressionSupported());
-    
ArchaiusUtils.setProperty("servicecomb.rest.server.decompressionSupported", 
true);
-    Assertions.assertTrue(TransportConfig.getDecompressionSupported());
-  }
-
-  @Test
-  public void testGetDecoderInitialBufferSize() {
-    Assertions.assertEquals(128, 
TransportConfig.getDecoderInitialBufferSize());
-    
ArchaiusUtils.setProperty("servicecomb.rest.server.decoderInitialBufferSize", 
256);
-    Assertions.assertEquals(256, 
TransportConfig.getDecoderInitialBufferSize());
-  }
-
-  @Test
-  public void testGetHttp2ConnectionWindowSize() {
-    Assertions.assertEquals(-1, 
TransportConfig.getHttp2ConnectionWindowSize());
-    
ArchaiusUtils.setProperty("servicecomb.rest.server.http2ConnectionWindowSize", 
1);
-    Assertions.assertEquals(1, TransportConfig.getHttp2ConnectionWindowSize());
-  }
-
-  @Test
-  public void testGetMaxFormAttributeSize() {
-    Assertions.assertEquals(8192, TransportConfig.getMaxFormAttributeSize());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.maxFormAttributeSize", 
3072);
-    Assertions.assertEquals(3072, TransportConfig.getMaxFormAttributeSize());
-  }
-
-  @Test
-  public void testGeCompressionLevel() {
-    Assertions.assertEquals(6, TransportConfig.getCompressionLevel());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.compressionLevel", 8);
-    Assertions.assertEquals(8, TransportConfig.getCompressionLevel());
-  }
-
-  @Test
-  public void testGetMaxChunkSize() {
-    Assertions.assertEquals(8192, TransportConfig.getMaxChunkSize());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.maxChunkSize", 65536);
-    Assertions.assertEquals(65536, TransportConfig.getMaxChunkSize());
-  }
-
-  @Test
-  public void testIsCorsEnabled() {
-    Assertions.assertFalse(TransportConfig.isCorsEnabled());
-    ArchaiusUtils.setProperty("servicecomb.cors.enabled", true);
-    Assertions.assertTrue(TransportConfig.isCorsEnabled());
-    ArchaiusUtils.setProperty("servicecomb.cors.enabled", false);
-    Assertions.assertFalse(TransportConfig.isCorsEnabled());
-  }
-
-  @Test
-  public void testGetCorsAllowedOrigin() {
-    Assertions.assertEquals("*", TransportConfig.getCorsAllowedOrigin());
-    String origin = "http://localhost:8080";;
-    ArchaiusUtils.setProperty("servicecomb.cors.origin", origin);
-    Assertions.assertEquals(origin, TransportConfig.getCorsAllowedOrigin());
-  }
-
-  @Test
-  public void testIsCorsAllowCredentials() {
-    Assertions.assertFalse(TransportConfig.isCorsAllowCredentials());
-    ArchaiusUtils.setProperty("servicecomb.cors.allowCredentials", true);
-    Assertions.assertTrue(TransportConfig.isCorsAllowCredentials());
-    ArchaiusUtils.setProperty("servicecomb.cors.allowCredentials", false);
-    Assertions.assertFalse(TransportConfig.isCorsAllowCredentials());
-  }
-
-  @Test
-  public void testGetCorsAllowedHeaders() {
-    String configKey = "servicecomb.cors.allowedHeader";
-    Assertions.assertTrue(TransportConfig.getCorsAllowedHeaders().isEmpty());
-    ArchaiusUtils.setProperty(configKey, "abc");
-    MatcherAssert.assertThat(TransportConfig.getCorsAllowedHeaders(), 
Matchers.containsInAnyOrder("abc"));
-    ArchaiusUtils.setProperty(configKey, "abc, def");
-    MatcherAssert.assertThat(TransportConfig.getCorsAllowedHeaders(), 
Matchers.containsInAnyOrder("abc", "def"));
-    ArchaiusUtils.setProperty(configKey, "abc ,, def");
-    MatcherAssert.assertThat(TransportConfig.getCorsAllowedHeaders(), 
Matchers.containsInAnyOrder("abc", "def"));
-    ArchaiusUtils.setProperty(configKey, "");
-    Assertions.assertTrue(TransportConfig.getCorsAllowedHeaders().isEmpty());
-  }
-
-  @Test
-  public void testGetCorsAllowedMethods() {
-    String configKey = "servicecomb.cors.allowedMethod";
-    Assertions.assertTrue(TransportConfig.getCorsAllowedMethods().isEmpty());
-    ArchaiusUtils.setProperty(configKey, "GET");
-    MatcherAssert.assertThat(TransportConfig.getCorsAllowedMethods(), 
Matchers.containsInAnyOrder("GET"));
-    ArchaiusUtils.setProperty(configKey, "GET, POST");
-    MatcherAssert.assertThat(TransportConfig.getCorsAllowedMethods(), 
Matchers.containsInAnyOrder("GET", "POST"));
-    ArchaiusUtils.setProperty(configKey, "GET,,POST");
-    MatcherAssert.assertThat(TransportConfig.getCorsAllowedMethods(), 
Matchers.containsInAnyOrder("GET", "POST"));
-    ArchaiusUtils.setProperty(configKey, "");
-    Assertions.assertTrue(TransportConfig.getCorsAllowedMethods().isEmpty());
-  }
-
-  @Test
-  public void testGetCorsExposedHeaders() {
-    String configKey = "servicecomb.cors.exposedHeader";
-    Assertions.assertTrue(TransportConfig.getCorsExposedHeaders().isEmpty());
-    ArchaiusUtils.setProperty(configKey, "abc");
-    MatcherAssert.assertThat(TransportConfig.getCorsExposedHeaders(), 
Matchers.containsInAnyOrder("abc"));
-    ArchaiusUtils.setProperty(configKey, "abc, def");
-    MatcherAssert.assertThat(TransportConfig.getCorsExposedHeaders(), 
Matchers.containsInAnyOrder("abc", "def"));
-    ArchaiusUtils.setProperty(configKey, "abc ,, def");
-    MatcherAssert.assertThat(TransportConfig.getCorsExposedHeaders(), 
Matchers.containsInAnyOrder("abc", "def"));
-    ArchaiusUtils.setProperty(configKey, "");
-    Assertions.assertTrue(TransportConfig.getCorsExposedHeaders().isEmpty());
-  }
-
-  @Test
-  public void testGetCorsMaxAge() {
-    Assertions.assertEquals(-1, TransportConfig.getCorsMaxAge());
-    ArchaiusUtils.setProperty("servicecomb.cors.maxAge", 3600);
-    Assertions.assertEquals(3600, TransportConfig.getCorsMaxAge());
-  }
-
-  @Test
-  public void testHttp2Setting() {
-    Assertions.assertEquals(100L, TransportConfig.getMaxConcurrentStreams());
-    
ArchaiusUtils.setProperty("servicecomb.rest.server.http2.concurrentStreams", 
200L);
-    Assertions.assertEquals(200L, TransportConfig.getMaxConcurrentStreams());
-
-    Assertions.assertEquals(4096L, TransportConfig.getHttp2HeaderTableSize());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.http2.HeaderTableSize", 
8192L);
-    Assertions.assertEquals(8192L, TransportConfig.getHttp2HeaderTableSize());
-
-    Assertions.assertTrue(TransportConfig.getPushEnabled());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.http2.pushEnabled", 
false);
-    Assertions.assertFalse(TransportConfig.getPushEnabled());
-
-    Assertions.assertEquals(65535, TransportConfig.getInitialWindowSize());
-    
ArchaiusUtils.setProperty("servicecomb.rest.server.http2.initialWindowSize", 2 
* 65535);
-    Assertions.assertEquals(2 * 65535, TransportConfig.getInitialWindowSize());
-
-    Assertions.assertEquals(16384, TransportConfig.getMaxFrameSize());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.http2.maxFrameSize", 
65535);
-    Assertions.assertEquals(65535, TransportConfig.getMaxFrameSize());
-
-    Assertions.assertEquals(8192, TransportConfig.getMaxHeaderListSize());
-    
ArchaiusUtils.setProperty("servicecomb.rest.server.http2.maxHeaderListSize", 
65535);
-    Assertions.assertEquals(65535, TransportConfig.getMaxHeaderListSize());
-  }
-
-
-  @Test
-  public void testUseAlpn() {
-    Assertions.assertTrue(TransportConfig.getUseAlpn());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.http2.useAlpnEnabled", 
false);
-    Assertions.assertFalse(TransportConfig.getUseAlpn());
-  }
-
-  @Test
-  public void testGetMaxInitialLineLength() {
-    Assertions.assertEquals(4096, TransportConfig.getMaxInitialLineLength());
-    ArchaiusUtils.setProperty("servicecomb.rest.server.maxInitialLineLength", 
8000);
-    Assertions.assertEquals(8000, TransportConfig.getMaxInitialLineLength());
-  }
-}
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
index 67099a56a..ddce28c37 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
@@ -17,12 +17,9 @@
 
 package org.apache.servicecomb.transport.rest.vertx;
 
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response.Status;
-
 import org.apache.http.HttpHeaders;
 import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.config.ConfigUtil;
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
 import org.apache.servicecomb.core.transport.TransportManager;
@@ -35,11 +32,14 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 import 
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.ErrorDataDecoderException;
 import io.vertx.core.json.JsonObject;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response.Status;
 import mockit.Mocked;
 
 public class TestVertxRestDispatcher {
@@ -53,9 +53,19 @@ public class TestVertxRestDispatcher {
 
   Throwable throwable;
 
+  Environment environment = Mockito.mock(Environment.class);
+
   @Before
   public void setUp() {
-    ConfigUtil.installDynamicConfig();
+    LegacyPropertyFactory.setEnvironment(environment);
+    Mockito.when(environment.getProperty(
+            RestConst.UPLOAD_MAX_SIZE, long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_MAX_FILE_SIZE, 
long.class, -1L))
+        .thenReturn(-1L);
+    Mockito.when(environment.getProperty(RestConst.UPLOAD_FILE_SIZE_THRESHOLD, 
int.class, 0))
+        .thenReturn(0);
+
     dispatcher = new VertxRestDispatcher();
     dispatcher.init(mainRouter);
 
@@ -70,6 +80,9 @@ public class TestVertxRestDispatcher {
 
   @Test
   public void getOrder() {
+    Mockito.when(environment.getProperty(
+            "servicecomb.http.dispatcher.rest.order", int.class, 
Integer.MAX_VALUE))
+        .thenReturn(Integer.MAX_VALUE);
     Assertions.assertEquals(Integer.MAX_VALUE, dispatcher.getOrder());
   }
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestTransport.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestTransport.java
index 8bec21af7..29377821f 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestTransport.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestTransport.java
@@ -17,10 +17,15 @@
 
 package org.apache.servicecomb.transport.rest.vertx;
 
+import static 
org.apache.servicecomb.core.transport.AbstractTransport.PUBLISH_ADDRESS;
+
 import java.io.IOException;
 import java.net.ServerSocket;
 
+import org.apache.servicecomb.config.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
+import org.apache.servicecomb.foundation.vertx.client.tcp.TcpClientConfig;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.mockito.Mockito;
@@ -38,6 +43,30 @@ public class TestVertxRestTransport {
 
   private final VertxRestTransport instance = new VertxRestTransport();
 
+  Environment environment = Mockito.mock(Environment.class);
+
+  @Before
+  public void setUp() {
+    Mockito.when(environment.getProperty(
+            "servicecomb.request.timeout", long.class, (long) 
TcpClientConfig.DEFAULT_LOGIN_TIMEOUT))
+        .thenReturn((long) TcpClientConfig.DEFAULT_LOGIN_TIMEOUT);
+    
Mockito.when(environment.getProperty("servicecomb.rest.client.verticle-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.rest.client.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.verticle-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.rest.server.thread-count", 
int.class, -1))
+        .thenReturn(-1);
+    
Mockito.when(environment.getProperty("servicecomb.http.dispatcher.rest.order", 
int.class, Integer.MAX_VALUE))
+        .thenReturn(Integer.MAX_VALUE);
+    Mockito.when(environment.getProperty("servicecomb.rest.publishPort", 
int.class, 0))
+        .thenReturn(0);
+    Mockito.when(environment.getProperty(PUBLISH_ADDRESS, String.class, ""))
+        .thenReturn("");
+    LegacyPropertyFactory.setEnvironment(environment);
+  }
+
   @Test
   public void testGetInstance() {
     Assertions.assertNotNull(instance);
@@ -66,6 +95,7 @@ public class TestVertxRestTransport {
       };
       instance.init();
     } catch (Exception e) {
+      e.printStackTrace();
       status = true;
     }
     Assertions.assertFalse(status);
@@ -105,7 +135,6 @@ public class TestVertxRestTransport {
     };
 
     VertxRestTransport transport = new VertxRestTransport();
-    Environment environment = Mockito.mock(Environment.class);
     transport.setEnvironment(environment);
     Assertions.assertFalse(transport.canInit());
 
@@ -126,7 +155,6 @@ public class TestVertxRestTransport {
     };
 
     VertxRestTransport transport = new VertxRestTransport();
-    Environment environment = Mockito.mock(Environment.class);
     transport.setEnvironment(environment);
     Assertions.assertTrue(transport.canInit());
   }

Reply via email to