You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2023/10/18 07:57:37 UTC
[servicecomb-java-chassis] branch master updated: [SCB-2813]refactoring configuration extension because can not using ConfigurationProperties before configuration setup (#3976)
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
The following commit(s) were added to refs/heads/master by this push:
new 06b2b5f02 [SCB-2813]refactoring configuration extension because can not using ConfigurationProperties before configuration setup (#3976)
06b2b5f02 is described below
commit 06b2b5f02f99628c2dcef14e7fda24f604860f83
Author: liubao68 <bi...@qq.com>
AuthorDate: Wed Oct 18 15:57:32 2023 +0800
[SCB-2813]refactoring configuration extension because can not using ConfigurationProperties before configuration setup (#3976)
---
.../common/rest/TestRestEngineSchemaListener.java | 8 ++
.../rest/definition/TestRestOperationMeta.java | 27 +++--
.../common/rest/locator/TestMicroservicePaths.java | 27 +++--
.../rest/locator/TestServicePathManager.java | 37 ++++---
.../core/ConfigurationSpringInitializer.java | 99 ------------------
.../org/apache/servicecomb/core/SCBEngine.java | 21 +---
.../core/ServiceCombCoreConfiguration.java | 14 +--
.../servicecomb/core/bootstrap/SCBBootstrap.java | 10 +-
.../governance/ServiceCombMicroserviceMeta.java | 5 +-
.../core/invocation/InvocationFactory.java | 4 +-
.../provider/producer/ProducerBootListener.java | 12 +--
.../core/registry/discovery/SwaggerLoader.java | 13 +--
.../servicecomb/demo/edge/business/Impl.java | 12 +--
.../servicecomb/demo/edge/business/Impl.java | 10 +-
.../servicecomb/demo/edge/business/Impl.java | 12 +--
.../servicecomb/demo/edge/consumer/Consumer.java | 8 +-
.../edge/consumer/EdgeServiceGovernanceTest.java | 7 +-
.../demo/edge/model/ResultWithInstance.java | 7 +-
.../servicecomb/demo/CodeFirstRestTemplate.java | 11 +-
.../client/CodeFirstRestTemplateSpringmvc.java | 11 +-
.../demo/springmvc/client/TestResponse.java | 15 +--
.../config/apollo/ApolloConfiguration.java | 10 --
.../apollo/ApolloDynamicPropertiesSource.java | 17 ++--
...ache.servicecomb.config.DynamicPropertiesSource | 4 +-
.../config/cc/ConfigCenterConfiguration.java | 11 --
.../cc/ConfigCenterDynamicPropertiesSource.java | 58 +++++------
.../cc/ConfigCenterInformationCollector.java | 12 ++-
...ache.servicecomb.config.DynamicPropertiesSource | 4 +-
.../config/kie/KieConfigConfiguration.java | 11 --
.../config/kie/KieDynamicPropertiesSource.java | 45 ++++-----
.../kie/collect/KieClientInformationCollector.java | 13 +--
...ache.servicecomb.config.DynamicPropertiesSource | 4 +-
.../servicecomb/config/nacos/NacosClient.java | 12 +--
.../config/nacos/NacosConfigConfiguration.java | 11 --
.../config/nacos/NacosDynamicPropertiesSource.java | 7 +-
...ache.servicecomb.config.DynamicPropertiesSource | 4 +-
.../servicecomb/config/nacos/NacosClientTest.java | 6 +-
.../edge/core/CommonHttpEdgeDispatcher.java | 8 +-
.../servicecomb/config/BootStrapProperties.java | 20 ++++
.../config/ConfigEnvironmentPostProcessor.java | 35 +++++--
.../config/DynamicPropertiesSource.java | 9 +-
.../config/FoundationConfigConfiguration.java | 11 --
.../config/InMemoryDynamicPropertiesSource.java | 5 +-
.../config/LastPropertyPlaceholderConfigurer.java | 39 --------
.../servicecomb/config/MicroserviceProperties.java | 111 ---------------------
...ache.servicecomb.config.DynamicPropertiesSource | 4 +-
.../src/main/resources/META-INF/spring.factories | 2 +-
.../TestLastPropertyPlaceholderConfigurer.java | 69 -------------
.../PriorityInstancePropertyDiscoveryFilter.java | 11 +-
.../loadbalance/TestLoadBalanceFilter.java | 8 +-
...riorityInstancePropertyDiscoveryFilterTest.java | 33 +++---
.../consumer/ConsumerTokenManager.java | 13 +--
.../TestAuthenticationBootListener.java | 18 ++--
.../provider/TestProviderTokenManager.java | 12 +--
.../metrics/prometheus/PrometheusPublisher.java | 11 +-
.../prometheus/TestPrometheusPublisher.java | 7 +-
.../LightWeightRegistryConfiguration.java | 7 +-
.../localregistry/LocalRegistrationInstance.java | 25 +++--
.../localregistry/LocalRegistryConfiguration.java | 6 +-
.../registry/nacos/NacosMicroserviceHandler.java | 13 ++-
.../registry/nacos/NacosRegistration.java | 21 ++--
.../registry/nacos/NacosRegistrationInstance.java | 17 ++--
.../registry/sc/MicroserviceHandler.java | 21 ++--
.../servicecomb/registry/sc/SCAddressManager.java | 7 +-
.../servicecomb/registry/sc/SCConfiguration.java | 5 +-
.../servicecomb/registry/sc/SCRegistration.java | 11 +-
.../solution/basic/health/HealthEndpoint.java | 1 +
67 files changed, 392 insertions(+), 767 deletions(-)
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestEngineSchemaListener.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestEngineSchemaListener.java
index 43f452a14..fa619acb7 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestEngineSchemaListener.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestEngineSchemaListener.java
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.servicecomb.common.rest.locator.OperationLocator;
import org.apache.servicecomb.common.rest.locator.ServicePathManager;
import org.apache.servicecomb.common.rest.locator.TestPathSchema;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
@@ -59,6 +60,13 @@ public class TestRestEngineSchemaListener {
.thenReturn(false);
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(BootStrapProperties.CONFIG_SERVICE_APPLICATION))
+ .thenReturn(BootStrapProperties.DEFAULT_APPLICATION);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_NAME);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_ENVIRONMENT))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_ENVIRONMENT);
+
List<BootListener> listeners = new ArrayList<>();
listeners.add(new RestEngineSchemaListener());
scbEngine.setBootListeners(listeners);
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
index 7df112fcd..0e4e30ed9 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
import java.util.List;
import org.apache.servicecomb.common.rest.RestEngineSchemaListener;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
@@ -35,8 +36,8 @@ import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.executor.ExecutorManager;
import org.apache.servicecomb.core.transport.TransportManager;
import org.hamcrest.MatcherAssert;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.core.env.Environment;
@@ -156,25 +157,33 @@ public class TestRestOperationMeta {
}
}
- static SCBEngine scbEngine;
+ SCBEngine scbEngine;
- static OpenAPI swagger;
+ OpenAPI swagger;
OperationMeta meta;
RestOperationMeta operationMeta;
- @BeforeAll
- public static void classSetup() {
+ @BeforeEach
+ public void setUp() {
Environment environment = Mockito.mock(Environment.class);
scbEngine = SCBBootstrap.createSCBEngineForTest(environment);
ExecutorManager executorManager = Mockito.mock(ExecutorManager.class);
TransportManager transportManager = Mockito.mock(TransportManager.class);
scbEngine.setTransportManager(transportManager);
scbEngine.setExecutorManager(executorManager);
- scbEngine.setEnvironment(environment);
+
+ Mockito.when(environment.getProperty("servicecomb.rest.parameter.decodeAsObject", boolean.class, false))
+ .thenReturn(false);
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(BootStrapProperties.CONFIG_SERVICE_APPLICATION))
+ .thenReturn(BootStrapProperties.DEFAULT_APPLICATION);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME))
+ .thenReturn("test");
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_ENVIRONMENT))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_ENVIRONMENT);
List<BootListener> listeners = new ArrayList<>();
listeners.add(new RestEngineSchemaListener());
@@ -185,8 +194,8 @@ public class TestRestOperationMeta {
swagger = Mockito.spy(scbEngine.getProducerMicroserviceMeta().ensureFindSchemaMeta("sid1").getSwagger());
}
- @AfterAll
- public static void classTeardown() {
+ @AfterEach
+ public void teardown() {
scbEngine.destroy();
}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestMicroservicePaths.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestMicroservicePaths.java
index 95538da15..d99fb3b04 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestMicroservicePaths.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestMicroservicePaths.java
@@ -25,31 +25,36 @@ import java.util.List;
import org.apache.servicecomb.common.rest.RestEngineSchemaListener;
import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
import org.apache.servicecomb.core.executor.ExecutorManager;
import org.apache.servicecomb.core.transport.TransportManager;
-import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
-import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
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.mockito.Mockito;
import org.springframework.core.env.Environment;
public class TestMicroservicePaths {
- static SCBEngine scbEngine;
+ SCBEngine scbEngine;
- static MicroservicePaths paths;
+ MicroservicePaths paths;
- @BeforeAll
- public static void setup() {
+ @BeforeEach
+ public void setup() {
Environment environment = Mockito.mock(Environment.class);
scbEngine = SCBBootstrap.createSCBEngineForTest(environment);
- LegacyPropertyFactory.setEnvironment(environment);
- scbEngine.setEnvironment(environment);
+
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_APPLICATION))
+ .thenReturn(BootStrapProperties.DEFAULT_APPLICATION);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_NAME);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_ENVIRONMENT))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_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("servicecomb.rest.parameter.decodeAsObject", boolean.class, false))
@@ -68,8 +73,8 @@ public class TestMicroservicePaths {
paths = spm.producerPaths;
}
- @AfterAll
- public static void teardown() {
+ @AfterEach
+ public void teardown() {
scbEngine.destroy();
}
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 b6fe098c3..84ae22015 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java
@@ -24,37 +24,43 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.servicecomb.common.rest.RestEngineSchemaListener;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
import org.apache.servicecomb.core.executor.ExecutorManager;
import org.apache.servicecomb.core.transport.TransportManager;
-import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.foundation.common.utils.ClassLoaderScopeContext;
import org.apache.servicecomb.registry.definition.DefinitionConst;
import org.junit.jupiter.api.AfterEach;
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.mockito.Mockito;
import org.springframework.core.env.Environment;
public class TestServicePathManager {
- static Environment environment = Mockito.mock(Environment.class);
-
- @BeforeAll
- public static void beforeClass() {
- LegacyPropertyFactory.setEnvironment(environment);
- Mockito.when(environment.getProperty("servicecomb.rest.parameter.decodeAsObject", boolean.class, false))
- .thenReturn(false);
- }
-
SCBEngine scbEngine;
+ Environment environment;
+
@BeforeEach
public void setUp() {
+ environment = Mockito.mock(Environment.class);
+ scbEngine = SCBBootstrap.createSCBEngineForTest(environment);
+ Mockito.when(environment.getProperty("servicecomb.rest.parameter.decodeAsObject", boolean.class, false))
+ .thenReturn(false);
+ Mockito.when(environment.getProperty("servicecomb.rest.parameter.decodeAsObject", boolean.class, false))
+ .thenReturn(false);
+ 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(BootStrapProperties.CONFIG_SERVICE_APPLICATION))
+ .thenReturn(BootStrapProperties.DEFAULT_APPLICATION);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_NAME);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_ENVIRONMENT))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_ENVIRONMENT);
}
@AfterEach
@@ -65,11 +71,6 @@ public class TestServicePathManager {
@Test
public void testBuildProducerPathsNoPrefix() {
- Environment environment = Mockito.mock(Environment.class);
- scbEngine = SCBBootstrap.createSCBEngineForTest(environment);
- 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);
ExecutorManager executorManager = Mockito.mock(ExecutorManager.class);
TransportManager transportManager = Mockito.mock(TransportManager.class);
scbEngine.setTransportManager(transportManager);
@@ -90,9 +91,7 @@ public class TestServicePathManager {
@Test
public void testBuildProducerPathsHasPrefix() {
ClassLoaderScopeContext.setClassLoaderScopeProperty(DefinitionConst.URL_PREFIX, "/root/rest");
- Environment environment = Mockito.mock(Environment.class);
- scbEngine = SCBBootstrap.createSCBEngineForTest(environment);
- 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);
diff --git a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
deleted file mode 100644
index 7ab2a29ba..000000000
--- a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
+++ /dev/null
@@ -1,99 +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.core;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.servicecomb.config.DynamicPropertiesSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.EnvironmentAware;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.core.Ordered;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.Environment;
-
-/**
- * Add dynamic configuration, microserive.yaml to spring
- */
-public class ConfigurationSpringInitializer extends PropertySourcesPlaceholderConfigurer implements EnvironmentAware {
- private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationSpringInitializer.class);
-
- public static final String MICROSERVICE_PROPERTY_SOURCE_NAME = "microservice.yaml";
-
- public static final String MAPPING_PROPERTY_SOURCE_NAME = "mapping.yaml";
-
- public static final String EXTERNAL_INIT = "scb-config-external-init";
-
- public static void setExternalInit(boolean value) {
- System.setProperty(EXTERNAL_INIT, String.valueOf(value));
- }
-
- public static boolean isExternalInit() {
- return Boolean.getBoolean(EXTERNAL_INIT);
- }
-
- private final List<DynamicPropertiesSource<?>> dynamicPropertiesSources;
-
- public ConfigurationSpringInitializer(List<DynamicPropertiesSource<?>> dynamicPropertiesSources) {
- setOrder(Ordered.LOWEST_PRECEDENCE / 2);
- setIgnoreUnresolvablePlaceholders(true);
- this.dynamicPropertiesSources = dynamicPropertiesSources;
- }
-
- /**
- * Get configurations from Spring, merge them into the configurations of ServiceComb.
- * @param environment From which to get the extra config.
- */
- @Override
- public void setEnvironment(Environment environment) {
- super.setEnvironment(environment);
- if (isExternalInit()) {
- return;
- }
-
- addDynamicConfigurationToSpring(environment);
- }
-
-
- private void addDynamicConfigurationToSpring(Environment environment) {
- if (!(environment instanceof ConfigurableEnvironment)) {
- return;
- }
- try {
- for (DynamicPropertiesSource<?> dynamicPropertiesSource : dynamicPropertiesSources) {
- ((ConfigurableEnvironment) environment).getPropertySources()
- .addFirst(dynamicPropertiesSource.create(environment));
- }
- } catch (Exception e) {
- 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());
- }
- }
- }
-
- @Override
- protected Properties mergeProperties() throws IOException {
- return super.mergeProperties();
- }
-}
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index e63d2a497..f290379dd 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.priority.PriorityPropertyManager;
import org.apache.servicecomb.core.BootListener.BootEvent;
import org.apache.servicecomb.core.BootListener.EventType;
@@ -112,8 +112,6 @@ public class SCBEngine {
private RegistrationManager registrationManager;
- private MicroserviceProperties microserviceProperties;
-
private DiscoveryManager discoveryManager;
private Environment environment;
@@ -182,11 +180,6 @@ public class SCBEngine {
this.swaggerLoader = swaggerLoader;
}
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
- }
-
@Autowired
public void setExecutorManager(ExecutorManager executorManager) {
this.executorManager = executorManager;
@@ -206,11 +199,7 @@ public class SCBEngine {
}
public String getAppId() {
- return this.microserviceProperties.getApplication();
- }
-
- public MicroserviceProperties getMicroserviceProperties() {
- return this.microserviceProperties;
+ return BootStrapProperties.readApplication(environment);
}
public void setStatus(SCBStatus status) {
@@ -398,11 +387,11 @@ public class SCBEngine {
}
private void createProducerMicroserviceMeta() {
- String microserviceName = this.microserviceProperties.getName();
+ String microserviceName = BootStrapProperties.readServiceName(environment);
producerMicroserviceMeta = new MicroserviceMeta(this,
- this.microserviceProperties.getApplication(), microserviceName, false);
+ BootStrapProperties.readApplication(environment), microserviceName, false);
producerMicroserviceMeta.setFilterChain(filterChainsManager.findProducerChain(
- this.microserviceProperties.getApplication(), microserviceName));
+ BootStrapProperties.readApplication(environment), microserviceName));
producerMicroserviceMeta.setMicroserviceVersionsMeta(new MicroserviceVersionsMeta(this));
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/ServiceCombCoreConfiguration.java b/core/src/main/java/org/apache/servicecomb/core/ServiceCombCoreConfiguration.java
index 74b8f075f..93a3d95a3 100644
--- a/core/src/main/java/org/apache/servicecomb/core/ServiceCombCoreConfiguration.java
+++ b/core/src/main/java/org/apache/servicecomb/core/ServiceCombCoreConfiguration.java
@@ -16,10 +16,6 @@
*/
package org.apache.servicecomb.core;
-import java.util.List;
-
-import org.apache.servicecomb.config.DynamicPropertiesSource;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.core.bootup.FilterChainCollector;
import org.apache.servicecomb.core.bootup.ServiceInformationCollector;
import org.apache.servicecomb.core.executor.ExecutorManager;
@@ -35,12 +31,6 @@ import org.springframework.core.env.Environment;
@Configuration
@SuppressWarnings("unused")
public class ServiceCombCoreConfiguration {
- @Bean
- public ConfigurationSpringInitializer configurationSpringInitializer(
- List<DynamicPropertiesSource<?>> dynamicPropertiesSources) {
- return new ConfigurationSpringInitializer(dynamicPropertiesSources);
- }
-
@Bean
public SCBApplicationListener scbApplicationListener(SCBEngine scbEngine) {
SCBApplicationListener scbApplicationListener = new SCBApplicationListener(scbEngine);
@@ -60,8 +50,8 @@ public class ServiceCombCoreConfiguration {
}
@Bean
- public SwaggerLoader swaggerLoader(MicroserviceProperties microserviceProperties) {
- return new SwaggerLoader(microserviceProperties);
+ public SwaggerLoader swaggerLoader(Environment environment) {
+ return new SwaggerLoader(environment);
}
@Bean
diff --git a/core/src/main/java/org/apache/servicecomb/core/bootstrap/SCBBootstrap.java b/core/src/main/java/org/apache/servicecomb/core/bootstrap/SCBBootstrap.java
index 14a6c65b8..d80746482 100644
--- a/core/src/main/java/org/apache/servicecomb/core/bootstrap/SCBBootstrap.java
+++ b/core/src/main/java/org/apache/servicecomb/core/bootstrap/SCBBootstrap.java
@@ -19,10 +19,10 @@ package org.apache.servicecomb.core.bootstrap;
import java.util.Collections;
import java.util.List;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.executor.ExecutorManager;
import org.apache.servicecomb.core.transport.TransportManager;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.registry.DiscoveryManager;
import org.apache.servicecomb.registry.RegistrationManager;
import org.apache.servicecomb.registry.discovery.TelnetInstancePing;
@@ -30,24 +30,20 @@ import org.springframework.core.env.Environment;
public class SCBBootstrap {
public static SCBEngine createSCBEngineForTest(Environment environment) {
+ LegacyPropertyFactory.setEnvironment(environment);
RegistrationManager registrationManager = new RegistrationManager(Collections.emptyList());
DiscoveryManager discoveryManager = new DiscoveryManager(Collections.emptyList(),
List.of(new TelnetInstancePing()));
registrationManager.init();
discoveryManager.init();
- MicroserviceProperties microserviceProperties = new MicroserviceProperties();
- microserviceProperties.setApplication("test");
- microserviceProperties.setName("test");
- microserviceProperties.setVersion("0.0.1");
-
SCBEngine result = new SCBEngineForTest(environment);
result.setDiscoveryManager(discoveryManager);
result.setRegistrationManager(registrationManager);
result.setBootListeners(Collections.emptyList());
- result.setMicroserviceProperties(microserviceProperties);
result.setBootUpInformationCollectors(Collections.emptyList());
result.setExecutorManager(new ExecutorManager());
result.setTransportManager(new TransportManager());
+ result.setEnvironment(environment);
return result;
}
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/governance/ServiceCombMicroserviceMeta.java b/core/src/main/java/org/apache/servicecomb/core/governance/ServiceCombMicroserviceMeta.java
index 719771d51..3893e3e42 100644
--- a/core/src/main/java/org/apache/servicecomb/core/governance/ServiceCombMicroserviceMeta.java
+++ b/core/src/main/java/org/apache/servicecomb/core/governance/ServiceCombMicroserviceMeta.java
@@ -17,6 +17,7 @@
package org.apache.servicecomb.core.governance;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.governance.MicroserviceMeta;
@@ -29,11 +30,11 @@ public class ServiceCombMicroserviceMeta implements MicroserviceMeta {
@Override
public String getName() {
- return scbEngine.getMicroserviceProperties().getName();
+ return BootStrapProperties.readServiceName(scbEngine.getEnvironment());
}
@Override
public String getVersion() {
- return scbEngine.getMicroserviceProperties().getVersion();
+ return BootStrapProperties.readServiceVersion(scbEngine.getEnvironment());
}
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java b/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java
index b0146e8bc..776fdb325 100644
--- a/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java
+++ b/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.core.invocation;
import java.util.Map;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.CoreConst;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.Invocation;
@@ -41,7 +42,8 @@ public final class InvocationFactory {
}
public static Invocation setSrcMicroservice(Invocation invocation) {
- invocation.addContext(CoreConst.SRC_MICROSERVICE, SCBEngine.getInstance().getMicroserviceProperties().getName());
+ invocation.addContext(CoreConst.SRC_MICROSERVICE,
+ BootStrapProperties.readServiceName(SCBEngine.getInstance().getEnvironment()));
// TODO: hard code registry name here. This is an old feature not for all registry implementations.
if (addSourceServiceId()) {
invocation.addContext(CoreConst.SRC_SERVICE_ID,
diff --git a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerBootListener.java b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerBootListener.java
index 78bb7e4c4..7dc291157 100644
--- a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerBootListener.java
+++ b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerBootListener.java
@@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets;
import java.util.concurrent.ExecutorService;
import org.apache.commons.io.FileUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.CoreConst;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
@@ -50,8 +50,6 @@ public class ProducerBootListener implements BootListener {
private RegistrationManager registrationManager;
- private MicroserviceProperties microserviceProperties;
-
private Environment environment;
@Autowired
@@ -59,11 +57,6 @@ public class ProducerBootListener implements BootListener {
this.registrationManager = registrationManager;
}
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
- }
-
@Autowired
public void setEnvironment(Environment environment) {
this.environment = environment;
@@ -83,7 +76,8 @@ public class ProducerBootListener implements BootListener {
OpenAPI swagger = schemaMeta.getSwagger();
String content = SwaggerUtils.swaggerToString(swagger);
if (exportToFile) {
- exportToFile(String.format(filePath, microserviceProperties.getName(), schemaMeta.getSchemaId()), content);
+ exportToFile(String.format(filePath,
+ BootStrapProperties.readServiceName(environment), schemaMeta.getSchemaId()), content);
} else {
LOGGER.info("generate swagger for {}/{}/{}, swagger: {}",
microserviceMeta.getAppId(),
diff --git a/core/src/main/java/org/apache/servicecomb/core/registry/discovery/SwaggerLoader.java b/core/src/main/java/org/apache/servicecomb/core/registry/discovery/SwaggerLoader.java
index 997b320b3..4273f2925 100644
--- a/core/src/main/java/org/apache/servicecomb/core/registry/discovery/SwaggerLoader.java
+++ b/core/src/main/java/org/apache/servicecomb/core/registry/discovery/SwaggerLoader.java
@@ -23,7 +23,7 @@ import java.util.Map;
import java.util.Optional;
import org.apache.commons.io.FilenameUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
import org.apache.servicecomb.foundation.common.utils.JvmUtils;
import org.apache.servicecomb.foundation.common.utils.ResourceUtil;
@@ -32,6 +32,7 @@ import org.apache.servicecomb.swagger.SwaggerUtils;
import org.apache.servicecomb.swagger.generator.SwaggerGenerator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.env.Environment;
import io.swagger.v3.oas.models.OpenAPI;
@@ -50,10 +51,10 @@ public class SwaggerLoader {
// third key : schemaId
private final Map<String, Map<String, Map<String, OpenAPI>>> apps = new ConcurrentHashMapEx<>();
- private final MicroserviceProperties microserviceProperties;
+ private final Environment environment;
- public SwaggerLoader(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public SwaggerLoader(Environment environment) {
+ this.environment = environment;
}
public void registerSwaggersInLocation(String microserviceName, String swaggersLocation) {
@@ -78,7 +79,7 @@ public class SwaggerLoader {
}
public void registerSwagger(String microserviceName, String schemaId, OpenAPI swagger) {
- MicroserviceNameParser parser = new MicroserviceNameParser(microserviceProperties.getApplication(),
+ MicroserviceNameParser parser = new MicroserviceNameParser(BootStrapProperties.readApplication(environment),
microserviceName);
registerSwagger(parser.getAppId(), parser.getMicroserviceName(), schemaId, swagger);
}
@@ -131,7 +132,7 @@ public class SwaggerLoader {
}
protected OpenAPI loadFromResource(String appId, String shortName, String schemaId) {
- if (appId.equals(microserviceProperties.getApplication())) {
+ if (appId.equals(BootStrapProperties.readApplication(environment))) {
OpenAPI swagger = loadFromResource(String.format("microservices/%s/%s.yaml", shortName, schemaId));
if (swagger != null) {
return swagger;
diff --git a/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java b/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
index 32f9529bf..38420d285 100644
--- a/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
+++ b/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
@@ -17,12 +17,12 @@
package org.apache.servicecomb.demo.edge.business;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.demo.edge.model.AppClientDataRsp;
import org.apache.servicecomb.demo.edge.model.ChannelRequestBase;
import org.apache.servicecomb.demo.edge.model.ResultWithInstance;
import org.apache.servicecomb.provider.rest.common.RestSchema;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -30,11 +30,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
@RestSchema(schemaId = "news-v1")
@RequestMapping(path = "/business/v1")
public class Impl {
- private MicroserviceProperties microserviceProperties;
+ private Environment environment;
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
@RequestMapping(path = "/channel/news/subscribe", method = RequestMethod.POST)
@@ -47,11 +47,11 @@ public class Impl {
@RequestMapping(path = "/add", method = RequestMethod.GET)
public ResultWithInstance add(int x, int y) {
- return ResultWithInstance.create(x + y, microserviceProperties);
+ return ResultWithInstance.create(x + y, environment);
}
@RequestMapping(path = "/dec", method = RequestMethod.GET)
public ResultWithInstance dec(int x, int y) {
- return ResultWithInstance.create(x - y, microserviceProperties);
+ return ResultWithInstance.create(x - y, environment);
}
}
diff --git a/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java b/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
index 28ddc4551..1e0d1b84b 100644
--- a/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
+++ b/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
@@ -17,12 +17,12 @@
package org.apache.servicecomb.demo.edge.business;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.demo.edge.model.AppClientDataRsp;
import org.apache.servicecomb.demo.edge.model.ChannelRequestBase;
import org.apache.servicecomb.demo.edge.model.ResultWithInstance;
import org.apache.servicecomb.provider.rest.common.RestSchema;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -30,11 +30,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
@RestSchema(schemaId = "news-v1")
@RequestMapping(path = "/business/v1")
public class Impl {
- private MicroserviceProperties microserviceProperties;
+ private Environment environment;
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
@RequestMapping(path = "/channel/news/subscribe", method = RequestMethod.POST)
@@ -47,6 +47,6 @@ public class Impl {
@RequestMapping(path = "/add", method = RequestMethod.GET)
public ResultWithInstance add(int x, int y) {
- return ResultWithInstance.create(x + y, microserviceProperties);
+ return ResultWithInstance.create(x + y, environment);
}
}
diff --git a/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java b/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
index caab0bc47..942133ece 100644
--- a/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
+++ b/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/Impl.java
@@ -25,7 +25,6 @@ import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.FileUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.demo.edge.model.AppClientDataRsp;
import org.apache.servicecomb.demo.edge.model.ChannelRequestBase;
import org.apache.servicecomb.demo.edge.model.DependTypeA;
@@ -34,6 +33,7 @@ import org.apache.servicecomb.demo.edge.model.ResultWithInstance;
import org.apache.servicecomb.demo.edge.model.User;
import org.apache.servicecomb.provider.rest.common.RestSchema;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -51,11 +51,11 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses;
@RestSchema(schemaId = "news-v2")
@RequestMapping(path = "/business/v2")
public class Impl {
- private MicroserviceProperties microserviceProperties;
+ private Environment environment;
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
File tempDir = new File("target/downloadTemp");
@@ -74,12 +74,12 @@ public class Impl {
@RequestMapping(path = "/add", method = RequestMethod.GET)
public ResultWithInstance add(int x, int y) {
- return ResultWithInstance.create(x + y, microserviceProperties);
+ return ResultWithInstance.create(x + y, environment);
}
@RequestMapping(path = "/dec", method = RequestMethod.GET)
public ResultWithInstance dec(int x, int y) {
- return ResultWithInstance.create(x - y, microserviceProperties);
+ return ResultWithInstance.create(x - y, environment);
}
@GetMapping(path = "/download")
diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
index dc52c49cd..43cab7bee 100644
--- a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
+++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
@@ -26,7 +26,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.demo.edge.model.ChannelRequestBase;
import org.apache.servicecomb.demo.edge.model.DependTypeA;
import org.apache.servicecomb.demo.edge.model.DependTypeB;
@@ -37,6 +37,7 @@ import org.apache.servicecomb.foundation.common.utils.BeanUtils;
import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
import org.apache.servicecomb.registry.DiscoveryManager;
import org.apache.servicecomb.registry.api.DiscoveryInstance;
+import org.springframework.core.env.Environment;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
@@ -65,7 +66,7 @@ public class Consumer {
DiscoveryManager discoveryManager = BeanUtils.getBean(DiscoveryManager.class);
- MicroserviceProperties microserviceProperties = BeanUtils.getBean(MicroserviceProperties.class);
+ Environment environment = BeanUtils.getBean(Environment.class);
public Consumer() {
request.setDeviceId("2a5cc42ff60006ac");
@@ -270,7 +271,8 @@ public class Consumer {
}
private URIEndpointObject prepareEdge(String prefix) {
- DiscoveryInstance instance = discoveryManager.findServiceInstances(microserviceProperties.getApplication(), "edge")
+ DiscoveryInstance instance = discoveryManager.findServiceInstances(
+ BootStrapProperties.readApplication(environment), "edge")
.stream()
.findFirst()
.get();
diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
index cfb07abe3..3f9062a0f 100644
--- a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
+++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
@@ -21,7 +21,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.demo.CategorizedTestCase;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
@@ -29,6 +29,7 @@ import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
import org.apache.servicecomb.registry.DiscoveryManager;
import org.apache.servicecomb.registry.api.DiscoveryInstance;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.RestTemplate;
@@ -40,7 +41,7 @@ public class EdgeServiceGovernanceTest implements CategorizedTestCase {
String edgePrefix;
@Autowired
- MicroserviceProperties microserviceProperties;
+ Environment environment;
@Autowired
DiscoveryManager discoveryManager;
@@ -138,7 +139,7 @@ public class EdgeServiceGovernanceTest implements CategorizedTestCase {
private URIEndpointObject prepareEdge(String prefix) {
DiscoveryInstance microserviceInstance = discoveryManager.findServiceInstances(
- microserviceProperties.getApplication(), "edge")
+ BootStrapProperties.readApplication(environment), "edge")
.stream()
.findFirst()
.get();
diff --git a/demo/demo-edge/model/src/main/java/org/apache/servicecomb/demo/edge/model/ResultWithInstance.java b/demo/demo-edge/model/src/main/java/org/apache/servicecomb/demo/edge/model/ResultWithInstance.java
index f83aa7e84..c225f7fee 100644
--- a/demo/demo-edge/model/src/main/java/org/apache/servicecomb/demo/edge/model/ResultWithInstance.java
+++ b/demo/demo-edge/model/src/main/java/org/apache/servicecomb/demo/edge/model/ResultWithInstance.java
@@ -17,7 +17,8 @@
package org.apache.servicecomb.demo.edge.model;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
+import org.springframework.core.env.Environment;
public class ResultWithInstance {
private int result;
@@ -28,10 +29,10 @@ public class ResultWithInstance {
private String version;
- public static ResultWithInstance create(int value, MicroserviceProperties microserviceProperties) {
+ public static ResultWithInstance create(int value, Environment environment) {
ResultWithInstance result = new ResultWithInstance();
result.setResult(value);
- result.setVersion(microserviceProperties.getVersion());
+ result.setVersion(BootStrapProperties.readServiceVersion(environment));
return result;
}
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
index 681b5c0a0..6f37563af 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
+++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
@@ -21,8 +21,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.InMemoryDynamicPropertiesSource;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.core.CoreConst;
import org.apache.servicecomb.demo.compute.Person;
import org.apache.servicecomb.demo.ignore.InputModelForTestIgnore;
@@ -32,6 +32,7 @@ import org.apache.servicecomb.swagger.invocation.context.ContextUtils;
import org.apache.servicecomb.swagger.invocation.context.InvocationContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.core.env.Environment;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
@@ -42,11 +43,11 @@ import org.springframework.web.client.RestTemplate;
import io.vertx.core.json.JsonObject;
public class CodeFirstRestTemplate {
- protected MicroserviceProperties microserviceProperties;
+ protected Environment environment;
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
protected void changeTransport(String microserviceName, String transport) {
@@ -161,7 +162,7 @@ public class CodeFirstRestTemplate {
private void testCseResponse(String targetMicroserviceName, RestTemplate template,
String cseUrlPrefix) {
- String srcMicroserviceName = microserviceProperties.getName();
+ String srcMicroserviceName = BootStrapProperties.readServiceName(environment);
ResponseEntity<User> responseEntity =
template.exchange(cseUrlPrefix + "cseResponse", HttpMethod.GET, null, User.class);
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
index fae0ad7cd..9240dbd38 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
@@ -27,13 +27,14 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.FileUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.demo.CodeFirstRestTemplate;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.foundation.common.part.FilePart;
import org.apache.servicecomb.provider.pojo.Invoker;
import org.apache.servicecomb.provider.springmvc.reference.CseHttpEntity;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpEntity;
@@ -74,9 +75,9 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
private TestContentType testContentType = new TestContentType();
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
- testResponse.setMicroserviceProperties(microserviceProperties);
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
+ testResponse.setEnvironment(environment);
}
@Override
@@ -184,7 +185,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
CseHttpEntity<Map<String, Object>> httpEntity = new CseHttpEntity<>(body);
httpEntity.addContext("contextKey", "contextValue");
- String srcName = microserviceProperties.getName();
+ String srcName = BootStrapProperties.readServiceName(environment);
ResponseEntity<Date> responseEntity =
template.exchange(cseUrlPrefix + "responseEntity", HttpMethod.POST, httpEntity, Date.class);
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java
index 20d8d4508..bede84dad 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java
@@ -20,7 +20,7 @@ import java.util.Date;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.demo.compute.GenericParam;
import org.apache.servicecomb.demo.compute.Person;
@@ -28,6 +28,7 @@ import org.apache.servicecomb.provider.pojo.Invoker;
import org.apache.servicecomb.swagger.invocation.Response;
import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
+import org.springframework.core.env.Environment;
import org.springframework.http.ResponseEntity;
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
@@ -35,10 +36,10 @@ import com.fasterxml.jackson.databind.exc.InvalidFormatException;
public class TestResponse {
private CodeFirstSpringmvcIntf intf;
- private MicroserviceProperties microserviceProperties;
+ private Environment environment;
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
public TestResponse() {
@@ -69,7 +70,7 @@ public class TestResponse {
}
private void testCseResponse() {
- String srcName = microserviceProperties.getName();
+ String srcName = BootStrapProperties.readServiceName(environment);
Response cseResponse = intf.cseResponse();
TestMgr.check("User [name=nameA, age=100, index=0]", cseResponse.getResult());
TestMgr.check("h1v " + srcName, cseResponse.getHeader("h1"));
@@ -78,7 +79,7 @@ public class TestResponse {
}
private void testCseResponseCorrect() {
- String srcName = microserviceProperties.getName();
+ String srcName = BootStrapProperties.readServiceName(environment);
Response cseResponse = intf.cseResponseCorrect();
TestMgr.check("User [name=nameA, age=100, index=0]", cseResponse.getResult());
TestMgr.check("h1v " + srcName, cseResponse.getHeader("h1"));
@@ -89,7 +90,7 @@ public class TestResponse {
private void testResponseEntity() {
Date date = new Date();
- String srcName = microserviceProperties.getName();
+ String srcName = BootStrapProperties.readServiceName(environment);
ResponseEntity<Date> responseEntity = intf.responseEntity(date);
TestMgr.check(date, responseEntity.getBody());
diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
index ac500eafc..152f23962 100644
--- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
+++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java
@@ -16,19 +16,9 @@
*/
package org.apache.servicecomb.config.apollo;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
@Configuration
public class ApolloConfiguration {
- @Bean
- public ApolloDynamicPropertiesSource apolloDynamicPropertiesSource() {
- return new ApolloDynamicPropertiesSource();
- }
- @Bean
- public ApolloConfig apolloConfig(Environment environment) {
- return new ApolloConfig(environment);
- }
}
diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
index 56dd7ed39..935877fcc 100644
--- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
+++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java
@@ -27,12 +27,10 @@ import org.apache.servicecomb.config.ConfigMapping;
import org.apache.servicecomb.config.DynamicPropertiesSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
-public class ApolloDynamicPropertiesSource implements DynamicPropertiesSource<Map<String, Object>> {
+public class ApolloDynamicPropertiesSource implements DynamicPropertiesSource {
public static final String SOURCE_NAME = "apollo";
private static final Logger LOGGER = LoggerFactory.getLogger(ApolloDynamicPropertiesSource.class);
@@ -42,11 +40,7 @@ public class ApolloDynamicPropertiesSource implements DynamicPropertiesSource<Ma
private final ApolloDynamicPropertiesSource.UpdateHandler updateHandler =
new ApolloDynamicPropertiesSource.UpdateHandler();
- private ApolloConfig apolloConfig;
-
- @Autowired
- public void setApolloConfig(ApolloConfig apolloConfig) {
- this.apolloConfig = apolloConfig;
+ public ApolloDynamicPropertiesSource() {
}
@Override
@@ -54,7 +48,8 @@ public class ApolloDynamicPropertiesSource implements DynamicPropertiesSource<Ma
return 300;
}
- private void init() {
+ private void init(Environment environment) {
+ ApolloConfig apolloConfig = new ApolloConfig(environment);
ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig);
apolloClient.refreshApolloConfig();
}
@@ -80,8 +75,8 @@ public class ApolloDynamicPropertiesSource implements DynamicPropertiesSource<Ma
}
@Override
- public EnumerablePropertySource<Map<String, Object>> create(Environment environment) {
- init();
+ public MapPropertySource create(Environment environment) {
+ init(environment);
return new MapPropertySource(SOURCE_NAME, valueCache);
}
}
diff --git a/core/src/main/resources/META-INF/spring.factories b/dynamic-config/config-apollo/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
similarity index 86%
copy from core/src/main/resources/META-INF/spring.factories
copy to dynamic-config/config-apollo/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
index 9c04cb2ce..aa0aae8be 100644
--- a/core/src/main/resources/META-INF/spring.factories
+++ b/dynamic-config/config-apollo/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
@@ -14,5 +14,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-org.springframework.boot.env.EnvironmentPostProcessor=\
- org.apache.servicecomb.core.ConfigurationSpringBootInitializer
+
+org.apache.servicecomb.config.apollo.ApolloDynamicPropertiesSource
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterConfiguration.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterConfiguration.java
index 97578fb2d..672a5931f 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterConfiguration.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterConfiguration.java
@@ -17,21 +17,10 @@
package org.apache.servicecomb.config.cc;
import org.springframework.context.annotation.Bean;
-import org.springframework.core.env.Environment;
public class ConfigCenterConfiguration {
@Bean
public ConfigCenterInformationCollector configCenterInformationCollector() {
return new ConfigCenterInformationCollector();
}
-
- @Bean
- public ConfigCenterDynamicPropertiesSource configCenterDynamicPropertiesSource() {
- return new ConfigCenterDynamicPropertiesSource();
- }
-
- @Bean
- public ConfigCenterConfig configCenterConfig(Environment environment) {
- return new ConfigCenterConfig(environment);
- }
}
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterDynamicPropertiesSource.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterDynamicPropertiesSource.java
index 22de503db..52f116727 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterDynamicPropertiesSource.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterDynamicPropertiesSource.java
@@ -27,8 +27,8 @@ import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.DynamicPropertiesSource;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.config.center.client.ConfigCenterAddressManager;
import org.apache.servicecomb.config.center.client.ConfigCenterClient;
import org.apache.servicecomb.config.center.client.ConfigCenterManager;
@@ -46,62 +46,51 @@ import org.apache.servicecomb.http.client.common.HttpTransport;
import org.apache.servicecomb.http.client.common.HttpTransportFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
import com.google.common.eventbus.Subscribe;
-public class ConfigCenterDynamicPropertiesSource implements DynamicPropertiesSource<Map<String, Object>> {
+public class ConfigCenterDynamicPropertiesSource implements DynamicPropertiesSource {
public static final String SOURCE_NAME = "config-center";
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigCenterDynamicPropertiesSource.class);
private final Map<String, Object> data = new ConcurrentHashMapEx<>();
- private ConfigCenterManager configCenterManager;
-
private ConfigConverter configConverter;
- private ConfigCenterConfig configCenterConfig;
-
- private MicroserviceProperties microserviceProperties;
-
- @Autowired
- public void setConfigCenterConfig(ConfigCenterConfig configCenterConfig) {
- this.configCenterConfig = configCenterConfig;
- }
-
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public ConfigCenterDynamicPropertiesSource() {
}
private void init(Environment environment) {
+ ConfigCenterConfig configCenterConfig = new ConfigCenterConfig(environment);
configConverter = new ConfigConverter(configCenterConfig.getFileSources());
- ConfigCenterAddressManager kieAddressManager = configKieAddressManager();
+ ConfigCenterAddressManager kieAddressManager = configKieAddressManager(configCenterConfig);
HttpTransport httpTransport = createHttpTransport(kieAddressManager,
HttpTransportFactory.defaultRequestConfig().build(),
- environment);
+ environment, configCenterConfig);
ConfigCenterClient configCenterClient = new ConfigCenterClient(kieAddressManager, httpTransport);
EventManager.register(this);
- org.apache.servicecomb.config.center.client.model.ConfigCenterConfiguration configCenterConfiguration = createConfigCenterConfiguration();
+ ConfigCenterConfiguration configCenterConfiguration =
+ createConfigCenterConfiguration(configCenterConfig);
- QueryConfigurationsRequest queryConfigurationsRequest = firstPull(configCenterClient);
+ QueryConfigurationsRequest queryConfigurationsRequest = firstPull(configCenterConfig, configCenterClient,
+ environment);
- configCenterManager = new ConfigCenterManager(configCenterClient, EventManager.getEventBus(),
+ ConfigCenterManager configCenterManager = new ConfigCenterManager(configCenterClient, EventManager.getEventBus(),
configConverter, configCenterConfiguration);
configCenterManager.setQueryConfigurationsRequest(queryConfigurationsRequest);
configCenterManager.startConfigCenterManager();
data.putAll(configConverter.getCurrentData());
}
- private QueryConfigurationsRequest firstPull(ConfigCenterClient configCenterClient) {
- QueryConfigurationsRequest queryConfigurationsRequest = createQueryConfigurationsRequest();
+ private QueryConfigurationsRequest firstPull(ConfigCenterConfig configCenterConfig,
+ ConfigCenterClient configCenterClient, Environment environment) {
+ QueryConfigurationsRequest queryConfigurationsRequest = createQueryConfigurationsRequest(environment);
try {
QueryConfigurationsResponse response = configCenterClient
.queryConfigurations(queryConfigurationsRequest);
@@ -125,24 +114,25 @@ public class ConfigCenterDynamicPropertiesSource implements DynamicPropertiesSou
event.getDeleted().forEach((k, v) -> data.remove(k));
}
- private QueryConfigurationsRequest createQueryConfigurationsRequest() {
+ private QueryConfigurationsRequest createQueryConfigurationsRequest(Environment environment) {
QueryConfigurationsRequest request = new QueryConfigurationsRequest();
- request.setApplication(microserviceProperties.getApplication());
- request.setServiceName(microserviceProperties.getName());
- request.setVersion(microserviceProperties.getVersion());
- request.setEnvironment(microserviceProperties.getEnvironment());
+ request.setApplication(BootStrapProperties.readApplication(environment));
+ request.setServiceName(BootStrapProperties.readServiceName(environment));
+ request.setVersion(BootStrapProperties.readServiceVersion(environment));
+ request.setEnvironment(BootStrapProperties.readServiceEnvironment(environment));
// 需要设置为 null, 并且 query 参数为 revision=null 才会返回 revision 信息。 revision = 是不行的。
request.setRevision(null);
return request;
}
- private org.apache.servicecomb.config.center.client.model.ConfigCenterConfiguration createConfigCenterConfiguration() {
+ private ConfigCenterConfiguration createConfigCenterConfiguration(
+ ConfigCenterConfig configCenterConfig) {
return new ConfigCenterConfiguration().setRefreshIntervalInMillis(configCenterConfig.getRefreshInterval());
}
private HttpTransport createHttpTransport(ConfigCenterAddressManager kieAddressManager,
RequestConfig requestConfig,
- Environment environment) {
+ Environment environment, ConfigCenterConfig configCenterConfig) {
List<AuthHeaderProvider> authHeaderProviders = SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class);
if (configCenterConfig.isProxyEnable()) {
@@ -179,14 +169,14 @@ public class ConfigCenterDynamicPropertiesSource implements DynamicPropertiesSou
};
}
- private ConfigCenterAddressManager configKieAddressManager() {
+ private ConfigCenterAddressManager configKieAddressManager(ConfigCenterConfig configCenterConfig) {
return new ConfigCenterAddressManager(configCenterConfig.getDomainName(),
configCenterConfig.getServerUri(),
EventManager.getEventBus());
}
@Override
- public EnumerablePropertySource<Map<String, Object>> create(Environment environment) {
+ public MapPropertySource create(Environment environment) {
init(environment);
return new MapPropertySource(SOURCE_NAME, data);
}
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterInformationCollector.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterInformationCollector.java
index e5b774129..ab91f3680 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterInformationCollector.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/cc/ConfigCenterInformationCollector.java
@@ -18,15 +18,17 @@
package org.apache.servicecomb.config.cc;
import org.apache.servicecomb.core.bootup.BootUpInformationCollector;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.core.env.Environment;
+import org.springframework.lang.NonNull;
-public class ConfigCenterInformationCollector implements BootUpInformationCollector {
+public class ConfigCenterInformationCollector implements BootUpInformationCollector, EnvironmentAware {
private ConfigCenterConfig configCenterConfig;
- @Autowired
- public void setConfigCenterConfig(ConfigCenterConfig configCenterConfig) {
- this.configCenterConfig = configCenterConfig;
+ @Override
+ public void setEnvironment(@NonNull Environment environment) {
+ this.configCenterConfig = new ConfigCenterConfig(environment);
}
@Override
diff --git a/core/src/main/resources/META-INF/spring.factories b/dynamic-config/config-cc/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
similarity index 86%
copy from core/src/main/resources/META-INF/spring.factories
copy to dynamic-config/config-cc/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
index 9c04cb2ce..94d24b08b 100644
--- a/core/src/main/resources/META-INF/spring.factories
+++ b/dynamic-config/config-cc/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
@@ -14,5 +14,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-org.springframework.boot.env.EnvironmentPostProcessor=\
- org.apache.servicecomb.core.ConfigurationSpringBootInitializer
+
+org.apache.servicecomb.config.cc.ConfigCenterDynamicPropertiesSource
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigConfiguration.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigConfiguration.java
index 50a362379..7b8e35bd6 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigConfiguration.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigConfiguration.java
@@ -18,21 +18,10 @@ package org.apache.servicecomb.config.kie;
import org.apache.servicecomb.config.kie.collect.KieClientInformationCollector;
import org.springframework.context.annotation.Bean;
-import org.springframework.core.env.Environment;
public class KieConfigConfiguration {
@Bean
public KieClientInformationCollector kieClientInformationCollector() {
return new KieClientInformationCollector();
}
-
- @Bean
- public KieConfig kieConfig(Environment environment) {
- return new KieConfig(environment);
- }
-
- @Bean
- public KieDynamicPropertiesSource kieDynamicPropertiesSource() {
- return new KieDynamicPropertiesSource();
- }
}
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieDynamicPropertiesSource.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieDynamicPropertiesSource.java
index d18fca89d..b06ae1130 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieDynamicPropertiesSource.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieDynamicPropertiesSource.java
@@ -28,8 +28,8 @@ import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.DynamicPropertiesSource;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.config.common.ConfigConverter;
import org.apache.servicecomb.config.common.ConfigurationChangedEvent;
import org.apache.servicecomb.config.kie.client.KieClient;
@@ -43,14 +43,12 @@ import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
import org.apache.servicecomb.http.client.auth.RequestAuthHeaderProvider;
import org.apache.servicecomb.http.client.common.HttpTransport;
import org.apache.servicecomb.http.client.common.HttpTransportFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
import com.google.common.eventbus.Subscribe;
-public class KieDynamicPropertiesSource implements DynamicPropertiesSource<Map<String, Object>> {
+public class KieDynamicPropertiesSource implements DynamicPropertiesSource {
public static final String SOURCE_NAME = "kie";
private final Map<String, Object> data = new ConcurrentHashMapEx<>();
@@ -59,23 +57,14 @@ public class KieDynamicPropertiesSource implements DynamicPropertiesSource<Map<S
private ConfigConverter configConverter;
- private KieConfig kieConfig;
+ public KieDynamicPropertiesSource() {
- private MicroserviceProperties microserviceProperties;
-
- @Autowired
- public void setKieConfig(KieConfig kieConfig) {
- this.kieConfig = kieConfig;
- }
-
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
}
private void init(Environment environment) {
+ KieConfig kieConfig = new KieConfig(environment);
configConverter = new ConfigConverter(kieConfig.getFileSources());
- KieAddressManager kieAddressManager = configKieAddressManager();
+ KieAddressManager kieAddressManager = configKieAddressManager(kieConfig);
RequestConfig.Builder requestBuilder = HttpTransportFactory.defaultRequestConfig();
if (kieConfig.enableLongPolling()
@@ -84,8 +73,8 @@ public class KieDynamicPropertiesSource implements DynamicPropertiesSource<Map<S
requestBuilder.setSocketTimeout(kieConfig.getPollingWaitTime() * 2 * 1000);
}
HttpTransport httpTransport = createHttpTransport(kieAddressManager, requestBuilder.build(),
- environment);
- KieConfiguration kieConfiguration = createKieConfiguration();
+ kieConfig, environment);
+ KieConfiguration kieConfiguration = createKieConfiguration(kieConfig, environment);
KieClient kieClient = new KieClient(kieAddressManager, httpTransport, kieConfiguration);
EventManager.register(this);
kieConfigManager = new KieConfigManager(kieClient, EventManager.getEventBus(), kieConfiguration, configConverter);
@@ -101,8 +90,12 @@ public class KieDynamicPropertiesSource implements DynamicPropertiesSource<Map<S
event.getDeleted().forEach((k, v) -> data.remove(k));
}
- private KieConfiguration createKieConfiguration() {
- return new KieConfiguration().setAppName(microserviceProperties.getApplication())
+ private KieConfiguration createKieConfiguration(KieConfig kieConfig, Environment environment) {
+ return new KieConfiguration()
+ .setAppName(BootStrapProperties.readApplication(environment))
+ .setServiceName(BootStrapProperties.readServiceName(environment))
+ .setEnvironment(BootStrapProperties.readServiceEnvironment(environment))
+ .setVersion(BootStrapProperties.readServiceVersion(environment))
.setFirstPullRequired(kieConfig.firstPullRequired())
.setCustomLabel(kieConfig.getCustomLabel())
.setCustomLabelValue(kieConfig.getCustomLabelValue())
@@ -111,15 +104,13 @@ public class KieDynamicPropertiesSource implements DynamicPropertiesSource<Map<S
.setEnableLongPolling(kieConfig.enableLongPolling())
.setEnableServiceConfig(kieConfig.enableServiceConfig())
.setEnableVersionConfig(kieConfig.enableVersionConfig())
- .setEnvironment(microserviceProperties.getEnvironment())
- .setVersion(microserviceProperties.getVersion())
.setPollingWaitInSeconds(kieConfig.getPollingWaitTime())
.setProject(kieConfig.getDomainName())
- .setRefreshIntervalInMillis(kieConfig.getRefreshInterval())
- .setServiceName(microserviceProperties.getName());
+ .setRefreshIntervalInMillis(kieConfig.getRefreshInterval());
}
- private HttpTransport createHttpTransport(KieAddressManager kieAddressManager, RequestConfig requestConfig,
+ private HttpTransport createHttpTransport(KieAddressManager kieAddressManager,
+ RequestConfig requestConfig, KieConfig kieConfig,
Environment environment) {
List<AuthHeaderProvider> authHeaderProviders = SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class);
@@ -157,13 +148,13 @@ public class KieDynamicPropertiesSource implements DynamicPropertiesSource<Map<S
};
}
- private KieAddressManager configKieAddressManager() {
+ private KieAddressManager configKieAddressManager(KieConfig kieConfig) {
return new KieAddressManager(
Arrays.asList(kieConfig.getServerUri().split(",")), EventManager.getEventBus());
}
@Override
- public EnumerablePropertySource<Map<String, Object>> create(Environment environment) {
+ public MapPropertySource create(Environment environment) {
init(environment);
return new MapPropertySource(SOURCE_NAME, data);
}
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/collect/KieClientInformationCollector.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/collect/KieClientInformationCollector.java
index 135f0319a..d689aaec2 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/collect/KieClientInformationCollector.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/collect/KieClientInformationCollector.java
@@ -19,15 +19,16 @@ package org.apache.servicecomb.config.kie.collect;
import org.apache.servicecomb.config.kie.KieConfig;
import org.apache.servicecomb.core.bootup.BootUpInformationCollector;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.core.env.Environment;
+import org.springframework.lang.NonNull;
-
-public class KieClientInformationCollector implements BootUpInformationCollector {
+public class KieClientInformationCollector implements BootUpInformationCollector, EnvironmentAware {
private KieConfig kieConfig;
- @Autowired
- public void setKieConfig(KieConfig kieConfig) {
- this.kieConfig = kieConfig;
+ @Override
+ public void setEnvironment(@NonNull Environment environment) {
+ this.kieConfig = new KieConfig(environment);
}
@Override
diff --git a/core/src/main/resources/META-INF/spring.factories b/dynamic-config/config-kie/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
similarity index 86%
copy from core/src/main/resources/META-INF/spring.factories
copy to dynamic-config/config-kie/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
index 9c04cb2ce..1ff1d0d0b 100644
--- a/core/src/main/resources/META-INF/spring.factories
+++ b/dynamic-config/config-kie/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
@@ -14,5 +14,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-org.springframework.boot.env.EnvironmentPostProcessor=\
- org.apache.servicecomb.core.ConfigurationSpringBootInitializer
+
+org.apache.servicecomb.config.kie.KieDynamicPropertiesSource
diff --git a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosClient.java b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosClient.java
index 7d79c52b7..2f774571a 100644
--- a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosClient.java
+++ b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosClient.java
@@ -32,7 +32,7 @@ import org.apache.servicecomb.config.nacos.NacosDynamicPropertiesSource.UpdateHa
import org.apache.servicecomb.config.parser.Parser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
@@ -46,15 +46,11 @@ public class NacosClient {
private final UpdateHandler updateHandler;
- private NacosConfig nacosConfig;
+ private final NacosConfig nacosConfig;
- public NacosClient(UpdateHandler updateHandler) {
+ public NacosClient(UpdateHandler updateHandler, Environment environment) {
this.updateHandler = updateHandler;
- }
-
- @Autowired
- public void setNacosConfig(NacosConfig nacosConfig) {
- this.nacosConfig = nacosConfig;
+ this.nacosConfig = new NacosConfig(environment);
}
public void refreshNacosConfig() {
diff --git a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosConfigConfiguration.java b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosConfigConfiguration.java
index bad19c3dc..969d621b1 100644
--- a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosConfigConfiguration.java
+++ b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosConfigConfiguration.java
@@ -16,17 +16,6 @@
*/
package org.apache.servicecomb.config.nacos;
-import org.springframework.context.annotation.Bean;
-import org.springframework.core.env.Environment;
-
public class NacosConfigConfiguration {
- @Bean
- public NacosConfig nacosConfig(Environment environment) {
- return new NacosConfig(environment);
- }
- @Bean
- public NacosDynamicPropertiesSource nacosDynamicPropertiesSource() {
- return new NacosDynamicPropertiesSource();
- }
}
diff --git a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
index bb6d32780..1ee1750f9 100644
--- a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
+++ b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java
@@ -27,13 +27,12 @@ import org.apache.servicecomb.config.ConfigMapping;
import org.apache.servicecomb.config.DynamicPropertiesSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
import com.google.common.annotations.VisibleForTesting;
-public class NacosDynamicPropertiesSource implements DynamicPropertiesSource<Map<String, Object>> {
+public class NacosDynamicPropertiesSource implements DynamicPropertiesSource {
public static final String SOURCE_NAME = "kie";
private static final Logger LOGGER = LoggerFactory.getLogger(NacosDynamicPropertiesSource.class);
@@ -52,7 +51,7 @@ public class NacosDynamicPropertiesSource implements DynamicPropertiesSource<Map
private void init(Environment environment) {
- NacosClient nacosClient = new NacosClient(updateHandler);
+ NacosClient nacosClient = new NacosClient(updateHandler, environment);
nacosClient.refreshNacosConfig();
}
@@ -77,7 +76,7 @@ public class NacosDynamicPropertiesSource implements DynamicPropertiesSource<Map
}
@Override
- public EnumerablePropertySource<Map<String, Object>> create(Environment environment) {
+ public MapPropertySource create(Environment environment) {
init(environment);
return new MapPropertySource(SOURCE_NAME, valueCache);
}
diff --git a/core/src/main/resources/META-INF/spring.factories b/dynamic-config/config-nacos/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
similarity index 86%
copy from core/src/main/resources/META-INF/spring.factories
copy to dynamic-config/config-nacos/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
index 9c04cb2ce..f7b7e1024 100644
--- a/core/src/main/resources/META-INF/spring.factories
+++ b/dynamic-config/config-nacos/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
@@ -14,5 +14,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-org.springframework.boot.env.EnvironmentPostProcessor=\
- org.apache.servicecomb.core.ConfigurationSpringBootInitializer
+
+org.apache.servicecomb.config.nacos.NacosDynamicPropertiesSource
diff --git a/dynamic-config/config-nacos/src/test/java/org/apache/servicecomb/config/nacos/NacosClientTest.java b/dynamic-config/config-nacos/src/test/java/org/apache/servicecomb/config/nacos/NacosClientTest.java
index 119bc73ca..718c45d22 100644
--- a/dynamic-config/config-nacos/src/test/java/org/apache/servicecomb/config/nacos/NacosClientTest.java
+++ b/dynamic-config/config-nacos/src/test/java/org/apache/servicecomb/config/nacos/NacosClientTest.java
@@ -24,6 +24,7 @@ import org.apache.servicecomb.config.nacos.NacosDynamicPropertiesSource.UpdateHa
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
public class NacosClientTest {
@@ -33,12 +34,13 @@ public class NacosClientTest {
Map<String, Object> before = new HashMap<>();
Map<String, Object> after = new HashMap<>();
+ Environment environment = Mockito.mock(Environment.class);
+ Mockito.when(environment.getProperty(NacosConfig.CONTENT_TYPE, "yaml")).thenReturn("yaml");
NacosDynamicPropertiesSource impl = new NacosDynamicPropertiesSource();
UpdateHandler updateHandler = impl.new UpdateHandler();
- NacosClient nacosClient = new NacosClient(updateHandler);
+ NacosClient nacosClient = new NacosClient(updateHandler, environment);
NacosConfig nacosConfig = Mockito.mock(NacosConfig.class);
Mockito.when(nacosConfig.getContentType()).thenReturn("yaml");
- nacosClient.setNacosConfig(nacosConfig);
NacosClient.ConfigRefresh cr = nacosClient.new ConfigRefresh();
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/CommonHttpEdgeDispatcher.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/CommonHttpEdgeDispatcher.java
index baed88dd4..d771fa80a 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/CommonHttpEdgeDispatcher.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/CommonHttpEdgeDispatcher.java
@@ -20,8 +20,8 @@ package org.apache.servicecomb.edge.core;
import java.util.HashMap;
import java.util.Map;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.ConfigurationChangedEvent;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.foundation.common.cache.VersionedCache;
@@ -98,8 +98,8 @@ public class CommonHttpEdgeDispatcher extends AbstractEdgeDispatcher {
}
// Maybe future change to beans
- protected MicroserviceProperties getMicroserviceProperties() {
- return BeanUtils.getBean(MicroserviceProperties.class);
+ protected Environment getEnvironment() {
+ return BeanUtils.getBean(Environment.class);
}
// Maybe future change to beans
@@ -223,7 +223,7 @@ public class CommonHttpEdgeDispatcher extends AbstractEdgeDispatcher {
DiscoveryContext context = new DiscoveryContext();
context.setInputParameters(invocation);
VersionedCache serversVersionedCache = getDiscoveryTree().discovery(context,
- getMicroserviceProperties().getApplication(),
+ BootStrapProperties.readApplication(environment),
microserviceName);
invocation.addLocalContext(LoadBalanceFilter.CONTEXT_KEY_SERVER_LIST, serversVersionedCache.data());
return loadBalancerMap
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/BootStrapProperties.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/BootStrapProperties.java
index 1023bdb38..046b326b8 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/BootStrapProperties.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/BootStrapProperties.java
@@ -28,6 +28,18 @@ import org.springframework.core.env.Environment;
/**
* This class holds configurations that need to be configured
* through property files or environment variables.
+ *
+ * These properties are core model for java chassis, e.g.
+ * <pre>
+ * servicecomb:
+ * service:
+ * application:
+ * name:
+ * version:
+ * environment:
+ * properties:
+ * </pre>
+ *
*/
public class BootStrapProperties {
// start of : service definition keys
@@ -40,6 +52,8 @@ public class BootStrapProperties {
public static final String OLD_CONFIG_SERVICE_ROLE = "service_description.role";
+ public static final String OLD_CONFIG_SERVICE_ALIAS = "service_description.alias";
+
public static final String OLD_CONFIG_SERVICE_DESCRIPTION = "service_description.description";
public static final String OLD_CONFIG_SERVICE_ENVIRONMENT = "service_description.environment";
@@ -64,6 +78,8 @@ public class BootStrapProperties {
public static final String CONFIG_SERVICE_ROLE = "servicecomb.service.role";
+ public static final String CONFIG_SERVICE_ALIAS = "servicecomb.service.alias";
+
public static final String CONFIG_SERVICE_DESCRIPTION = "servicecomb.service.description";
public static final String CONFIG_SERVICE_ENVIRONMENT = "servicecomb.service.environment";
@@ -113,6 +129,10 @@ public class BootStrapProperties {
return readStringValue(environment, CONFIG_SERVICE_ROLE, OLD_CONFIG_SERVICE_ROLE, DEFAULT_MICROSERVICE_ROLE);
}
+ public static String readServiceAlias(Environment environment) {
+ return readStringValue(environment, CONFIG_SERVICE_ALIAS, OLD_CONFIG_SERVICE_ALIAS, null);
+ }
+
public static String readServiceDescription(Environment environment) {
String[] descriptionArray = environment.getProperty(CONFIG_SERVICE_DESCRIPTION, String[].class);
if (null == descriptionArray || descriptionArray.length < 1) {
diff --git a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringBootInitializer.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigEnvironmentPostProcessor.java
similarity index 80%
rename from core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringBootInitializer.java
rename to foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigEnvironmentPostProcessor.java
index 3e401a42d..0edb84541 100644
--- a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringBootInitializer.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigEnvironmentPostProcessor.java
@@ -14,18 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.servicecomb.core;
+package org.apache.servicecomb.config;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import org.apache.servicecomb.config.ConfigMapping;
-import org.apache.servicecomb.config.YAMLUtil;
import org.apache.servicecomb.config.file.MicroserviceConfigLoader;
import org.apache.servicecomb.foundation.bootstrap.BootStrapService;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.context.annotation.Conditional;
@@ -36,20 +36,20 @@ import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.MutablePropertySources;
/**
- * Add microservice.yaml to Environment earlier<br>
- * to affect {@link Conditional}<br>
+ * Initialize configuration.
*/
-public class ConfigurationSpringBootInitializer implements EnvironmentPostProcessor {
+public class ConfigEnvironmentPostProcessor implements EnvironmentPostProcessor {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConfigEnvironmentPostProcessor.class);
+
public static final String MICROSERVICE_PROPERTY_SOURCE_NAME = "microservice.yaml";
public static final String MAPPING_PROPERTY_SOURCE_NAME = "mapping.yaml";
- private final List<BootStrapService> bootStrapServices = SPIServiceUtils.getSortedService(BootStrapService.class);
-
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
addMicroserviceDefinitions(environment);
startupBootStrapService(environment);
+ addDynamicConfigurationToSpring(environment);
}
public static void addMicroserviceDefinitions(Environment environment) {
@@ -58,7 +58,9 @@ public class ConfigurationSpringBootInitializer implements EnvironmentPostProces
}
private void startupBootStrapService(Environment environment) {
- bootStrapServices.forEach(bootStrapService -> bootStrapService.startup(environment));
+ for (BootStrapService bootStrapService : SPIServiceUtils.getSortedService(BootStrapService.class)) {
+ bootStrapService.startup(environment);
+ }
}
/**
@@ -126,4 +128,19 @@ public class ConfigurationSpringBootInitializer implements EnvironmentPostProces
Map<String, Object> mappings = ConfigMapping.getConvertedMap(environment);
propertySources.addFirst(new MapPropertySource(MAPPING_PROPERTY_SOURCE_NAME, mappings));
}
+
+ private void addDynamicConfigurationToSpring(Environment environment) {
+ if (!(environment instanceof ConfigurableEnvironment)) {
+ return;
+ }
+ try {
+ for (DynamicPropertiesSource dynamicPropertiesSource :
+ SPIServiceUtils.getOrLoadSortedService(DynamicPropertiesSource.class)) {
+ ((ConfigurableEnvironment) environment).getPropertySources()
+ .addFirst(dynamicPropertiesSource.create(environment));
+ }
+ } catch (Exception e) {
+ LOGGER.warn("set up dynamic property source to spring failed.", e);
+ }
+ }
}
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesSource.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesSource.java
index 8833d26af..87af7f66f 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesSource.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesSource.java
@@ -17,9 +17,12 @@
package org.apache.servicecomb.config;
import org.springframework.core.Ordered;
-import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
+import org.springframework.core.env.MapPropertySource;
-public interface DynamicPropertiesSource<T> extends Ordered {
- EnumerablePropertySource<T> create(Environment environment);
+/**
+ * SPI to add new DynamicPropertiesSource.
+ */
+public interface DynamicPropertiesSource extends Ordered {
+ MapPropertySource create(Environment environment);
}
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 a89cd16a4..9cb7c231a 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
@@ -44,11 +44,6 @@ public class FoundationConfigConfiguration {
return new PriorityPropertyFactory(environment);
}
- @Bean
- public LastPropertyPlaceholderConfigurer lastPropertyPlaceholderConfigurer() {
- return new LastPropertyPlaceholderConfigurer();
- }
-
@Bean
public DynamicPropertiesImpl dynamicProperties(Environment environment) {
return new DynamicPropertiesImpl(environment);
@@ -59,12 +54,6 @@ public class FoundationConfigConfiguration {
return new ConfigObjectFactory(propertyFactory);
}
- @Bean
- @ConfigurationProperties(prefix = MicroserviceProperties.PREFIX)
- public MicroserviceProperties microserviceProperties() {
- return new MicroserviceProperties();
- }
-
@Bean
@ConfigurationProperties(prefix = DataCenterProperties.PREFIX)
public DataCenterProperties dataCenterProperties() {
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/InMemoryDynamicPropertiesSource.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/InMemoryDynamicPropertiesSource.java
index e9a450f92..8ce73d727 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/InMemoryDynamicPropertiesSource.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/InMemoryDynamicPropertiesSource.java
@@ -20,20 +20,19 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.servicecomb.foundation.common.event.EventManager;
-import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
/**
* This DynamicPropertiesSource is created for easier system tests.
*/
-public class InMemoryDynamicPropertiesSource implements DynamicPropertiesSource<Map<String, Object>> {
+public class InMemoryDynamicPropertiesSource implements DynamicPropertiesSource {
public static final String SOURCE_NAME = "in-memory";
private static final Map<String, Object> DYNAMIC = new HashMap<>();
@Override
- public EnumerablePropertySource<Map<String, Object>> create(Environment environment) {
+ public MapPropertySource create(Environment environment) {
return new MapPropertySource(SOURCE_NAME, DYNAMIC);
}
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java
deleted file mode 100644
index ec5054bb7..000000000
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.config;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.core.Ordered;
-
-// do not implements PriorityOrdered, must be Ordered
-// because this bean must run after PropertyPlaceholderConfigurer
-// this class's purpose: when asked to resolve placeholder, then throw exception directly
-public class LastPropertyPlaceholderConfigurer implements BeanFactoryPostProcessor, Ordered {
- @Override
- public int getOrder() {
- return Ordered.LOWEST_PRECEDENCE;
- }
-
- @Override
- public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
- new PropertySourcesPlaceholderConfigurer().postProcessBeanFactory(beanFactory);
- }
-}
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/MicroserviceProperties.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/MicroserviceProperties.java
deleted file mode 100644
index a0baab1f8..000000000
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/MicroserviceProperties.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.config;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-
-public class MicroserviceProperties {
- public static final String PREFIX = "servicecomb.service";
-
- private String environment;
-
- private String application;
-
- private String name;
-
- private String alias;
-
- private String version;
-
- private String description;
-
- private Map<String, String> properties = new HashMap<>();
-
- public String getEnvironment() {
- return environment;
- }
-
- public void setEnvironment(String environment) {
- this.environment = environment;
- }
-
- public String getApplication() {
- if (StringUtils.isEmpty(application)) {
- throw new IllegalStateException(
- "Application Name is required in configuration. NOTICE: since 3.0.0, only support "
- + PREFIX + ".application to configure microservice application.");
- }
- return application;
- }
-
- public void setApplication(String application) {
- this.application = application;
- }
-
- public String getName() {
- if (StringUtils.isEmpty(name)) {
- throw new IllegalStateException(
- "Service Name is required in configuration. NOTICE: since 3.0.0, only support "
- + PREFIX + ".name to configure microservice name.");
- }
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getAlias() {
- return alias;
- }
-
- public void setAlias(String alias) {
- this.alias = alias;
- }
-
- public String getVersion() {
- if (StringUtils.isEmpty(version)) {
- throw new IllegalStateException(
- "Service version is required in configuration. NOTICE: since 3.0.0, only support "
- + PREFIX + ".version to configure microservice version.");
- }
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Map<String, String> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, String> properties) {
- this.properties = properties;
- }
-}
diff --git a/core/src/main/resources/META-INF/spring.factories b/foundations/foundation-config/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
similarity index 86%
copy from core/src/main/resources/META-INF/spring.factories
copy to foundations/foundation-config/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
index 9c04cb2ce..1f148e651 100644
--- a/core/src/main/resources/META-INF/spring.factories
+++ b/foundations/foundation-config/src/main/resources/META-INF/services/org.apache.servicecomb.config.DynamicPropertiesSource
@@ -14,5 +14,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-org.springframework.boot.env.EnvironmentPostProcessor=\
- org.apache.servicecomb.core.ConfigurationSpringBootInitializer
+
+org.apache.servicecomb.config.InMemoryDynamicPropertiesSource
diff --git a/core/src/main/resources/META-INF/spring.factories b/foundations/foundation-config/src/main/resources/META-INF/spring.factories
similarity index 92%
rename from core/src/main/resources/META-INF/spring.factories
rename to foundations/foundation-config/src/main/resources/META-INF/spring.factories
index 9c04cb2ce..1654b6183 100644
--- a/core/src/main/resources/META-INF/spring.factories
+++ b/foundations/foundation-config/src/main/resources/META-INF/spring.factories
@@ -15,4 +15,4 @@
# limitations under the License.
#
org.springframework.boot.env.EnvironmentPostProcessor=\
- org.apache.servicecomb.core.ConfigurationSpringBootInitializer
+ org.apache.servicecomb.config.ConfigEnvironmentPostProcessor
diff --git a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java
deleted file mode 100644
index fa6f3e2fe..000000000
--- a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.config;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import org.junit.Test;
-import org.junit.jupiter.api.Assertions;
-import org.springframework.context.EmbeddedValueResolverAware;
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.stereotype.Component;
-import org.springframework.util.StringValueResolver;
-
-public class TestLastPropertyPlaceholderConfigurer {
- @Component
- static class Bean extends PropertySourcesPlaceholderConfigurer implements EmbeddedValueResolverAware {
- StringValueResolver resolver;
-
- public Bean() {
- setIgnoreUnresolvablePlaceholders(true);
- }
-
- @Override
- public void setEmbeddedValueResolver(StringValueResolver resolver) {
- this.resolver = resolver;
- }
-
- @Override
- protected Properties mergeProperties() throws IOException {
- Properties properties = super.mergeProperties();
- properties.put("a", "aValue");
- return properties;
- }
- }
-
- @Test
- public void test() {
- AnnotationConfigApplicationContext context =
- new AnnotationConfigApplicationContext(this.getClass().getPackage().getName());
- Bean bean = context.getBean(Bean.class);
-
- Assertions.assertEquals("aValue", bean.resolver.resolveStringValue("${a}"));
- try {
- bean.resolver.resolveStringValue("${b}");
- Assertions.fail("must throw exception");
- } catch (IllegalArgumentException e) {
- Assertions.assertEquals("Could not resolve placeholder 'b' in value \"${b}\"", e.getMessage());
- }
-
- context.close();
- }
-}
diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
index 9ee50d5b4..7dbe07023 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
@@ -25,7 +25,7 @@ import java.util.Objects;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.registry.discovery.AbstractDiscoveryFilter;
import org.apache.servicecomb.registry.discovery.DiscoveryContext;
@@ -34,6 +34,7 @@ import org.apache.servicecomb.registry.discovery.StatefulDiscoveryInstance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
import jakarta.validation.constraints.NotNull;
@@ -48,11 +49,11 @@ public class PriorityInstancePropertyDiscoveryFilter extends AbstractDiscoveryFi
private String propertyKey;
- private MicroserviceProperties microserviceProperties;
+ private Environment environment;
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
@Override
@@ -85,7 +86,7 @@ public class PriorityInstancePropertyDiscoveryFilter extends AbstractDiscoveryFi
String initPropertyValue = invocation.getContext()
.computeIfAbsent("x-" + propertyKey,
key -> new PriorityInstanceProperty(propertyKey,
- microserviceProperties.getProperties().get(propertyKey))
+ BootStrapProperties.readServiceProperties(environment).get(propertyKey))
.getPropertyValue());
PriorityInstanceProperty currentProperty = context.getContextParameter(propertyKey);
diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
index e7a0c0687..dc61706f5 100644
--- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
+++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java
@@ -25,6 +25,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.Transport;
@@ -75,7 +76,12 @@ public class TestLoadBalanceFilter {
public void setUp() {
Environment environment = Mockito.mock(Environment.class);
scbEngine = SCBBootstrap.createSCBEngineForTest(environment);
- scbEngine.setEnvironment(environment);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_APPLICATION))
+ .thenReturn(BootStrapProperties.DEFAULT_APPLICATION);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_NAME);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_ENVIRONMENT))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_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("servicecomb.loadbalance.userDefinedEndpoint.enabled",
diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
index e56126954..23f7c92f6 100644
--- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
+++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
@@ -27,9 +27,7 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.registry.RegistrationManager;
import org.apache.servicecomb.registry.api.DiscoveryInstance;
import org.apache.servicecomb.registry.discovery.DiscoveryContext;
import org.apache.servicecomb.registry.discovery.DiscoveryTreeNode;
@@ -38,12 +36,12 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-import org.springframework.core.env.Environment;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.EnumerablePropertySource;
+import org.springframework.core.env.MutablePropertySources;
import com.google.common.collect.Sets;
-import mockit.Injectable;
-
/**
* Test for PriorityInstancePropertyDiscoveryFilter
*/
@@ -55,26 +53,28 @@ public class PriorityInstancePropertyDiscoveryFilterTest {
private List<StatefulDiscoveryInstance> instances;
- private MicroserviceProperties self;
-
- @Injectable
- RegistrationManager registrationManager;
-
- RegistrationManager original;
-
StatefulDiscoveryInstance instance1;
- Environment environment = Mockito.mock(Environment.class);
+ ConfigurableEnvironment environment = Mockito.mock(ConfigurableEnvironment.class);
+
+ EnumerablePropertySource propertySource;
@Before
public void setUp() {
+ propertySource = Mockito.mock(EnumerablePropertySource.class);
+ MutablePropertySources mutablePropertySources = new MutablePropertySources();
+ mutablePropertySources.addLast(propertySource);
+ Mockito.when(environment.getPropertySources()).thenReturn(mutablePropertySources);
+ Mockito.when(propertySource.getPropertyNames()).thenReturn(new String[] {
+ "servicecomb.service.properties." + PROPERTY_KEY
+ });
+
filter = new PriorityInstancePropertyDiscoveryFilter();
filter.setEnvironment(environment);
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.priorityInstanceProperty.key",
String.class, "environment")).thenReturn("environment");
instances = new ArrayList<>();
- self = new MicroserviceProperties();
- filter.setMicroserviceProperties(self);
+ filter.setEnvironment(environment);
DiscoveryInstance discoveryInstance1 = Mockito.mock(DiscoveryInstance.class);
instance1 = new StatefulDiscoveryInstance(discoveryInstance1);
Mockito.when(discoveryInstance1.getInstanceId()).thenReturn("instance.empty");
@@ -135,10 +135,11 @@ public class PriorityInstancePropertyDiscoveryFilterTest {
private void executeTest(String selfProperty, Set<String> expectedMatchedKeys) {
+ Mockito.when(environment.getProperty("servicecomb.service.properties." + PROPERTY_KEY)).thenReturn(selfProperty);
+
Invocation invocation = new Invocation();
DiscoveryContext discoveryContext = new DiscoveryContext();
discoveryContext.setInputParameters(invocation);
- self.getProperties().put(PROPERTY_KEY, selfProperty);
DiscoveryTreeNode parent = new DiscoveryTreeNode();
parent.name("parent");
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerTokenManager.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerTokenManager.java
index 7e5c40794..8da889abc 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerTokenManager.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerTokenManager.java
@@ -19,12 +19,13 @@ package org.apache.servicecomb.authentication.consumer;
import java.security.PrivateKey;
import org.apache.servicecomb.authentication.RSAAuthenticationToken;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.foundation.common.utils.KeyPairUtils;
import org.apache.servicecomb.foundation.token.Keypair4Auth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
public class ConsumerTokenManager {
@@ -34,11 +35,11 @@ public class ConsumerTokenManager {
private RSAAuthenticationToken token;
- private MicroserviceProperties microserviceProperties;
+ private Environment environment;
@Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
}
public String getToken() {
@@ -55,8 +56,8 @@ public class ConsumerTokenManager {
public String createToken() {
PrivateKey privateKey = Keypair4Auth.INSTANCE.getPrivateKey();
- String instanceId = microserviceProperties.getName();
- String serviceId = microserviceProperties.getApplication();
+ String instanceId = BootStrapProperties.readServiceName(environment);
+ String serviceId = BootStrapProperties.readApplication(environment);
if (instanceId == null || serviceId == null) {
LOGGER.error("service not ready when create token.");
diff --git a/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestAuthenticationBootListener.java b/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestAuthenticationBootListener.java
index ca222f5b6..28cb8d48d 100644
--- a/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestAuthenticationBootListener.java
+++ b/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestAuthenticationBootListener.java
@@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.times;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.BootListener.BootEvent;
import org.apache.servicecomb.core.SCBEngine;
@@ -32,7 +33,6 @@ import org.apache.servicecomb.registry.RegistrationManager;
import org.apache.servicecomb.registry.definition.DefinitionConst;
import org.junit.jupiter.api.AfterEach;
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.mockito.Mockito;
@@ -41,10 +41,11 @@ import org.springframework.core.env.Environment;
public class TestAuthenticationBootListener {
private SCBEngine engine;
- static Environment environment = Mockito.mock(Environment.class);
+ private Environment environment;
- @BeforeAll
- public static void setUpClass() {
+ @BeforeEach
+ public void setUp() {
+ environment = Mockito.mock(Environment.class);
LegacyPropertyFactory.setEnvironment(environment);
Mockito.when(environment.getProperty("servicecomb.publicKey.accessControl.keyGeneratorAlgorithm", "RSA"))
.thenReturn("RSA");
@@ -54,10 +55,13 @@ public class TestAuthenticationBootListener {
.thenReturn(2048);
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(BootStrapProperties.CONFIG_SERVICE_APPLICATION))
+ .thenReturn(BootStrapProperties.DEFAULT_APPLICATION);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_NAME);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_ENVIRONMENT))
+ .thenReturn(BootStrapProperties.DEFAULT_MICROSERVICE_ENVIRONMENT);
- @BeforeEach
- public void setUp() {
engine = SCBBootstrap.createSCBEngineForTest(environment);
engine.run();
}
diff --git a/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/provider/TestProviderTokenManager.java b/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/provider/TestProviderTokenManager.java
index 5c9777be4..801f91e69 100644
--- a/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/provider/TestProviderTokenManager.java
+++ b/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/provider/TestProviderTokenManager.java
@@ -25,7 +25,7 @@ import java.util.Map;
import org.apache.servicecomb.authentication.RSAAuthenticationToken;
import org.apache.servicecomb.authentication.consumer.ConsumerTokenManager;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.foundation.common.utils.KeyPairEntry;
import org.apache.servicecomb.foundation.common.utils.KeyPairUtils;
@@ -134,10 +134,10 @@ public class TestProviderTokenManager {
String instanceId = "test";
ConsumerTokenManager consumerTokenManager = new ConsumerTokenManager();
- MicroserviceProperties microserviceProperties = Mockito.mock(MicroserviceProperties.class);
- Mockito.when(microserviceProperties.getName()).thenReturn("test");
- Mockito.when(microserviceProperties.getApplication()).thenReturn("test");
- consumerTokenManager.setMicroserviceProperties(microserviceProperties);
+ ConfigurableEnvironment environment = Mockito.mock(ConfigurableEnvironment.class);
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_NAME)).thenReturn("test");
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_APPLICATION)).thenReturn("test");
+ consumerTokenManager.setEnvironment(environment);
DiscoveryInstance microserviceInstance = Mockito.mock(DiscoveryInstance.class);
Mockito.when(microserviceInstance.getInstanceId()).thenReturn(instanceId);
Map<String, String> properties = new HashMap<>();
@@ -151,7 +151,7 @@ public class TestProviderTokenManager {
// use cache token
Assertions.assertEquals(token, consumerTokenManager.getToken());
ProviderTokenManager rsaProviderTokenManager = new ProviderTokenManager();
- ConfigurableEnvironment environment = Mockito.mock(ConfigurableEnvironment.class);
+
MutablePropertySources mutablePropertySources = new MutablePropertySources();
Mockito.when(environment.getPropertySources()).thenReturn(mutablePropertySources);
rsaProviderTokenManager.setAccessController(new AccessController(environment));
diff --git a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java
index 8ebc1acfa..12ae5041d 100644
--- a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java
+++ b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java
@@ -21,7 +21,7 @@ import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
import org.apache.servicecomb.foundation.metrics.MetricsBootstrapConfig;
import org.apache.servicecomb.foundation.metrics.MetricsInitializer;
@@ -51,15 +51,8 @@ public class PrometheusPublisher extends Collector implements Collector.Describa
private GlobalRegistry globalRegistry;
- private MicroserviceProperties microserviceProperties;
-
private Environment environment;
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
- }
-
@Autowired
public void setEnvironment(Environment environment) {
this.environment = environment;
@@ -119,7 +112,7 @@ public class PrometheusPublisher extends Collector implements Collector.Describa
List<String> labelValues = new ArrayList<>();
labelNames.add("appId");
- labelValues.add(microserviceProperties.getApplication());
+ labelValues.add(BootStrapProperties.readApplication(environment));
for (Tag tag : measurement.id().tags()) {
labelNames.add(tag.key());
diff --git a/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java b/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java
index a8549059f..167a66b40 100644
--- a/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java
+++ b/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java
@@ -30,7 +30,7 @@ import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
import org.apache.servicecomb.foundation.metrics.MetricsBootstrapConfig;
import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
@@ -99,11 +99,10 @@ public class TestPrometheusPublisher {
@Test
public void collect() throws IllegalAccessException, IOException {
- MicroserviceProperties microserviceProperties = Mockito.mock(MicroserviceProperties.class);
- Mockito.when(microserviceProperties.getApplication()).thenReturn("testAppId");
+ Mockito.when(environment.getProperty(BootStrapProperties.CONFIG_SERVICE_APPLICATION)).thenReturn("testAppId");
Mockito.when(environment.getProperty(METRICS_PROMETHEUS_ADDRESS, String.class, "0.0.0.0:9696"))
.thenReturn("localhost:0");
- publisher.setMicroserviceProperties(microserviceProperties);
+ publisher.setEnvironment(environment);
publisher.init(globalRegistry, null, new MetricsBootstrapConfig(environment));
Registry registry = new DefaultRegistry(new ManualClock());
diff --git a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/LightWeightRegistryConfiguration.java b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/LightWeightRegistryConfiguration.java
index 0a78a3d2f..78ab582e1 100644
--- a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/LightWeightRegistryConfiguration.java
+++ b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/LightWeightRegistryConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.servicecomb.registry.lightweight;
import java.util.Collections;
import java.util.List;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.localregistry.RegistryBean;
import org.apache.servicecomb.localregistry.RegistryBean.Instance;
import org.apache.servicecomb.localregistry.RegistryBean.Instances;
@@ -27,6 +27,7 @@ import org.apache.servicecomb.provider.pojo.Invoker;
import org.apache.servicecomb.registry.lightweight.store.Store;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
import com.google.common.eventbus.EventBus;
@@ -62,8 +63,8 @@ public class LightWeightRegistryConfiguration {
}
@Bean
- public RegistryBean zeroConfigDiscoveryServer(MicroserviceProperties microserviceProperties) {
- return new RegistryBean().setAppId(microserviceProperties.getApplication())
+ public RegistryBean zeroConfigDiscoveryServer(Environment environment) {
+ return new RegistryBean().setAppId(BootStrapProperties.readApplication(environment))
.setServiceName(ZERO_CONFIG_DISCOVERY_CLIENT)
.addSchemaInterface(ZERO_CONFIG_DISCOVERY_CLIENT, DiscoveryClient.class)
// add an empty instance endpoint so that can invoke by endpoint
diff --git a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistrationInstance.java b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistrationInstance.java
index fb4baa272..739f5190a 100644
--- a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistrationInstance.java
+++ b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistrationInstance.java
@@ -22,14 +22,15 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.DataCenterProperties;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.registry.api.DataCenterInfo;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;
import org.apache.servicecomb.registry.api.RegistrationInstance;
+import org.springframework.core.env.Environment;
public class LocalRegistrationInstance implements RegistrationInstance {
- private final MicroserviceProperties microserviceProperties;
+ private final Environment environment;
private final DataCenterInfo dataCenterInfo;
@@ -42,18 +43,16 @@ public class LocalRegistrationInstance implements RegistrationInstance {
private final Map<String, String> properties = new HashMap<>();
public LocalRegistrationInstance(
- MicroserviceProperties microserviceProperties,
+ Environment environment,
DataCenterProperties dataCenterProperties) {
- this.microserviceProperties = microserviceProperties;
+ this.environment = environment;
this.dataCenterInfo = new DataCenterInfo();
this.dataCenterInfo.setName(dataCenterProperties.getName());
this.dataCenterInfo.setRegion(dataCenterProperties.getRegion());
this.dataCenterInfo.setAvailableZone(dataCenterProperties.getAvailableZone());
- if (this.microserviceProperties.getProperties() != null) {
- this.properties.putAll(this.microserviceProperties.getProperties());
- }
+ this.properties.putAll(BootStrapProperties.readServiceProperties(environment));
this.instanceId = System.currentTimeMillis() + "-" +
ManagementFactory.getRuntimeMXBean().getPid();
@@ -61,27 +60,27 @@ public class LocalRegistrationInstance implements RegistrationInstance {
@Override
public String getEnvironment() {
- return microserviceProperties.getEnvironment();
+ return BootStrapProperties.readServiceEnvironment(environment);
}
@Override
public String getApplication() {
- return microserviceProperties.getApplication();
+ return BootStrapProperties.readApplication(environment);
}
@Override
public String getServiceName() {
- return microserviceProperties.getName();
+ return BootStrapProperties.readServiceName(environment);
}
@Override
public String getAlias() {
- return microserviceProperties.getAlias();
+ return BootStrapProperties.readServiceAlias(environment);
}
@Override
public String getVersion() {
- return microserviceProperties.getVersion();
+ return BootStrapProperties.readServiceVersion(environment);
}
@Override
@@ -91,7 +90,7 @@ public class LocalRegistrationInstance implements RegistrationInstance {
@Override
public String getDescription() {
- return microserviceProperties.getDescription();
+ return BootStrapProperties.readServiceDescription(environment);
}
@Override
diff --git a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryConfiguration.java b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryConfiguration.java
index 8fe7fedb3..776fa12f3 100644
--- a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryConfiguration.java
+++ b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryConfiguration.java
@@ -17,17 +17,17 @@
package org.apache.servicecomb.localregistry;
import org.apache.servicecomb.config.DataCenterProperties;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
@Configuration
public class LocalRegistryConfiguration {
@Bean
public LocalRegistrationInstance localRegistrationInstance(
- MicroserviceProperties microserviceProperties,
+ Environment environment,
DataCenterProperties dataCenterProperties) {
- return new LocalRegistrationInstance(microserviceProperties, dataCenterProperties);
+ return new LocalRegistrationInstance(environment, dataCenterProperties);
}
@Bean
diff --git a/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosMicroserviceHandler.java b/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosMicroserviceHandler.java
index cada738df..8f1e66ac1 100644
--- a/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosMicroserviceHandler.java
+++ b/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosMicroserviceHandler.java
@@ -24,8 +24,8 @@ import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.ConfigUtil;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.foundation.common.net.NetUtils;
import org.springframework.core.env.Environment;
@@ -46,8 +46,7 @@ public class NacosMicroserviceHandler {
private static final String INSTANCE_PROPS = "SERVICECOMB_INSTANCE_PROPS";
- public static Instance createMicroserviceInstance(NacosDiscoveryProperties properties, Environment environment,
- MicroserviceProperties microserviceProperties) {
+ public static Instance createMicroserviceInstance(NacosDiscoveryProperties properties, Environment environment) {
Instance instance = new Instance();
instance.setIp(StringUtils.isEmpty(properties.getIp()) ? NetUtils.getHostName() : properties.getIp());
instance.setPort(getEnvPort(environment));
@@ -55,9 +54,9 @@ public class NacosMicroserviceHandler {
instance.setWeight(properties.getWeight());
instance.setEnabled(properties.isInstanceEnabled());
Map<String, String> metadata = properties.getMetadata();
- metadata.put("version", microserviceProperties.getVersion());
- metadata.put("alias", microserviceProperties.getAlias());
- metadata.put("description", microserviceProperties.getDescription());
+ metadata.put("version", BootStrapProperties.readServiceVersion(environment));
+ metadata.put("alias", BootStrapProperties.readServiceAlias(environment));
+ metadata.put("description", BootStrapProperties.readServiceDescription(environment));
metadata.put("secure", String.valueOf(properties.isSecure()));
if (!StringUtils.isEmpty(environment.getProperty(VERSION_MAPPING)) &&
!StringUtils.isEmpty(environment.getProperty(environment.getProperty(VERSION_MAPPING)))) {
@@ -67,7 +66,7 @@ public class NacosMicroserviceHandler {
instance.setMetadata(metadata);
instance.setClusterName(properties.getClusterName());
instance.setEphemeral(properties.isEphemeral());
- instance.setServiceName(microserviceProperties.getName());
+ instance.setServiceName(BootStrapProperties.readServiceName(environment));
return instance;
}
diff --git a/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistration.java b/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistration.java
index 68c1a1580..754a05f70 100644
--- a/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistration.java
+++ b/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistration.java
@@ -20,7 +20,7 @@ package org.apache.servicecomb.registry.nacos;
import java.util.List;
import java.util.Map;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;
import org.apache.servicecomb.registry.api.Registration;
import org.springframework.beans.factory.annotation.Autowired;
@@ -50,8 +50,6 @@ public class NacosRegistration implements Registration<NacosRegistrationInstance
private String application;
- private MicroserviceProperties microserviceProperties;
-
private NamingService namingService;
private NamingMaintainService namingMaintainService;
@@ -65,18 +63,13 @@ public class NacosRegistration implements Registration<NacosRegistrationInstance
this.instancesChangeEventListener = instancesChangeEventListener;
}
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
- }
-
@Override
public void init() {
- instance = NacosMicroserviceHandler.createMicroserviceInstance(nacosDiscoveryProperties, environment,
- microserviceProperties);
- nacosRegistrationInstance = new NacosRegistrationInstance(instance, nacosDiscoveryProperties, microserviceProperties);
- serviceId = microserviceProperties.getName();
- application = microserviceProperties.getApplication();
+ instance = NacosMicroserviceHandler.createMicroserviceInstance(nacosDiscoveryProperties, environment);
+ nacosRegistrationInstance = new NacosRegistrationInstance(instance, nacosDiscoveryProperties,
+ environment);
+ serviceId = BootStrapProperties.readServiceName(environment);
+ application = BootStrapProperties.readApplication(environment);
namingService = NamingServiceManager.buildNamingService(nacosDiscoveryProperties);
namingMaintainService = NamingServiceManager.buildNamingMaintainService(nacosDiscoveryProperties);
NotifyCenter.registerSubscriber(instancesChangeEventListener);
@@ -96,7 +89,7 @@ public class NacosRegistration implements Registration<NacosRegistrationInstance
if (CollectionUtils.isEmpty(schemas)) {
return;
}
- for (Map.Entry<String, String> entry: schemas.entrySet()) {
+ for (Map.Entry<String, String> entry : schemas.entrySet()) {
metadata.put(NacosConst.SCHEMA_PREFIX + entry.getKey(), entry.getValue());
}
}
diff --git a/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistrationInstance.java b/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistrationInstance.java
index d2442072a..9bb3013c0 100644
--- a/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistrationInstance.java
+++ b/service-registry/registry-nacos/src/main/java/org/apache/servicecomb/registry/nacos/NacosRegistrationInstance.java
@@ -22,10 +22,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.servicecomb.config.MicroserviceProperties;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.registry.api.DataCenterInfo;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;
import org.apache.servicecomb.registry.api.RegistrationInstance;
+import org.springframework.core.env.Environment;
import com.alibaba.nacos.api.naming.pojo.Instance;
@@ -38,13 +39,13 @@ public class NacosRegistrationInstance implements RegistrationInstance {
private final List<String> endpoints = new ArrayList<>();
- private final MicroserviceProperties microserviceProperties;
+ private final Environment environment;
public NacosRegistrationInstance(Instance instance, NacosDiscoveryProperties nacosDiscoveryProperties,
- MicroserviceProperties microserviceProperties) {
+ Environment environment) {
this.instance = instance;
this.nacosDiscoveryProperties = nacosDiscoveryProperties;
- this.microserviceProperties = microserviceProperties;
+ this.environment = environment;
}
@Override
@@ -54,17 +55,17 @@ public class NacosRegistrationInstance implements RegistrationInstance {
@Override
public String getApplication() {
- return microserviceProperties.getApplication();
+ return BootStrapProperties.readApplication(environment);
}
@Override
public String getServiceName() {
- return microserviceProperties.getName();
+ return BootStrapProperties.readServiceName(environment);
}
@Override
public String getAlias() {
- return microserviceProperties.getAlias();
+ return BootStrapProperties.readServiceAlias(environment);
}
@Override
@@ -82,7 +83,7 @@ public class NacosRegistrationInstance implements RegistrationInstance {
@Override
public String getDescription() {
- return microserviceProperties.getDescription();
+ return BootStrapProperties.readServiceDescription(environment);
}
@Override
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/MicroserviceHandler.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/MicroserviceHandler.java
index 92abac9c9..c9fc28106 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/MicroserviceHandler.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/MicroserviceHandler.java
@@ -23,9 +23,9 @@ import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.ConfigUtil;
import org.apache.servicecomb.config.DataCenterProperties;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.foundation.common.net.NetUtils;
import org.apache.servicecomb.service.center.client.model.DataCenterInfo;
import org.apache.servicecomb.service.center.client.model.Framework;
@@ -59,30 +59,28 @@ public class MicroserviceHandler {
private static final String INSTANCE_PROPS = "SERVICECOMB_INSTANCE_PROPS";
public static Microservice createMicroservice(
- Environment environment,
- SCConfigurationProperties bootstrapProperties,
- MicroserviceProperties microserviceProperties) {
+ Environment environment) {
Microservice microservice = new Microservice();
- microservice.setProperties(microserviceProperties.getProperties());
+ microservice.setProperties(BootStrapProperties.readServiceProperties(environment));
if (!StringUtils.isEmpty(environment.getProperty(APP_MAPPING)) &&
!StringUtils.isEmpty(environment.getProperty(environment.getProperty(APP_MAPPING)))) {
microservice.setAppId(environment.getProperty(environment.getProperty(APP_MAPPING)));
} else {
- microservice.setAppId(microserviceProperties.getApplication());
+ microservice.setAppId(BootStrapProperties.readApplication(environment));
}
if (!StringUtils.isEmpty(environment.getProperty(SERVICE_MAPPING)) &&
!StringUtils.isEmpty(environment.getProperty(environment.getProperty(SERVICE_MAPPING)))) {
microservice.setServiceName(environment.getProperty(environment.getProperty(SERVICE_MAPPING)));
} else {
- microservice.setServiceName(microserviceProperties.getName());
+ microservice.setServiceName(BootStrapProperties.readServiceName(environment));
}
if (!StringUtils.isEmpty(environment.getProperty(VERSION_MAPPING)) &&
!StringUtils.isEmpty(environment.getProperty(environment.getProperty(VERSION_MAPPING)))) {
microservice.setVersion(environment.getProperty(environment.getProperty(VERSION_MAPPING)));
} else {
- microservice.setVersion(microserviceProperties.getVersion());
+ microservice.setVersion(BootStrapProperties.readServiceVersion(environment));
}
- microservice.setEnvironment(microserviceProperties.getEnvironment());
+ microservice.setEnvironment(BootStrapProperties.readServiceEnvironment(environment));
Framework framework = createFramework();
microservice.setFramework(framework);
@@ -106,7 +104,6 @@ public class MicroserviceHandler {
public static MicroserviceInstance createMicroserviceInstance(
Environment environment,
SCConfigurationProperties scConfigurationProperties,
- MicroserviceProperties microserviceProperties,
DataCenterProperties dataCenterProperties) {
MicroserviceInstance microserviceInstance = new MicroserviceInstance();
String hostName = StringUtils.isEmpty(scConfigurationProperties.getHostname()) ? NetUtils.getHostName()
@@ -138,11 +135,11 @@ public class MicroserviceHandler {
!StringUtils.isEmpty(environment.getProperty(environment.getProperty(VERSION_MAPPING)))) {
microserviceInstance.setVersion(environment.getProperty(environment.getProperty(VERSION_MAPPING)));
} else {
- microserviceInstance.setVersion(microserviceProperties.getVersion());
+ microserviceInstance.setVersion(BootStrapProperties.readServiceVersion(environment));
}
Map<String, String> properties = new HashMap<>();
- properties.putAll(microserviceProperties.getProperties());
+ properties.putAll(BootStrapProperties.readServiceProperties(environment));
properties.putAll(genCasProperties(environment));
microserviceInstance.setProperties(properties);
microserviceInstance.setStatus(MicroserviceInstanceStatus.valueOf(scConfigurationProperties.getInitialStatus()));
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCAddressManager.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCAddressManager.java
index efc66140f..c9bf300a3 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCAddressManager.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCAddressManager.java
@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.foundation.common.event.EventManager;
import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;
import org.apache.servicecomb.service.center.client.RegistrationEvents.HeartBeatEvent;
@@ -54,17 +53,13 @@ public class SCAddressManager {
private final ServiceCenterClient serviceCenterClient;
- private final MicroserviceProperties microserviceProperties;
-
private final SCRegistration scRegistration;
private final SCConfigurationProperties configurationProperties;
- public SCAddressManager(MicroserviceProperties microserviceProperties,
- SCConfigurationProperties configurationProperties,
+ public SCAddressManager(SCConfigurationProperties configurationProperties,
ServiceCenterClient serviceCenterClient,
SCRegistration scRegistration) {
- this.microserviceProperties = microserviceProperties;
this.configurationProperties = configurationProperties;
this.serviceCenterClient = serviceCenterClient;
this.scRegistration = scRegistration;
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCConfiguration.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCConfiguration.java
index 8b516cfd9..ac7620ad2 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCConfiguration.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCConfiguration.java
@@ -18,7 +18,6 @@ package org.apache.servicecomb.registry.sc;
import java.util.List;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.foundation.auth.AuthHeaderProvider;
import org.apache.servicecomb.service.center.client.ServiceCenterClient;
import org.apache.servicecomb.service.center.client.ServiceCenterWatch;
@@ -67,11 +66,11 @@ public class SCConfiguration {
}
@Bean
- public SCAddressManager scAddressManager(MicroserviceProperties microserviceProperties,
+ public SCAddressManager scAddressManager(
@Qualifier("scConfigurationProperties") SCConfigurationProperties scConfigurationProperties,
SCRegistration scRegistration,
@Qualifier("serviceCenterClient") ServiceCenterClient serviceCenterClient) {
- return new SCAddressManager(microserviceProperties, scConfigurationProperties,
+ return new SCAddressManager(scConfigurationProperties,
serviceCenterClient, scRegistration);
}
}
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCRegistration.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCRegistration.java
index fda0273ca..ba7047632 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCRegistration.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/registry/sc/SCRegistration.java
@@ -20,7 +20,6 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.servicecomb.config.DataCenterProperties;
-import org.apache.servicecomb.config.MicroserviceProperties;
import org.apache.servicecomb.foundation.common.event.SimpleEventBus;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;
import org.apache.servicecomb.registry.api.Registration;
@@ -57,8 +56,6 @@ public class SCRegistration implements Registration<SCRegistrationInstance> {
private SCRegistrationInstance registrationInstance;
- private MicroserviceProperties microserviceProperties;
-
private DataCenterProperties dataCenterProperties;
private Environment environment;
@@ -73,11 +70,6 @@ public class SCRegistration implements Registration<SCRegistrationInstance> {
this.serviceCenterWatch = serviceCenterWatch;
}
- @Autowired
- public void setMicroserviceProperties(MicroserviceProperties microserviceProperties) {
- this.microserviceProperties = microserviceProperties;
- }
-
@Autowired
public void setDataCenterProperties(DataCenterProperties dataCenterProperties) {
this.dataCenterProperties = dataCenterProperties;
@@ -92,11 +84,10 @@ public class SCRegistration implements Registration<SCRegistrationInstance> {
@Override
public void init() {
microservice = MicroserviceHandler.createMicroservice(
- environment, configurationProperties, microserviceProperties);
+ environment);
microserviceInstance = MicroserviceHandler.createMicroserviceInstance(
environment,
configurationProperties,
- microserviceProperties,
dataCenterProperties);
serviceCenterRegistration = new ServiceCenterRegistration(serviceCenterClient,
new ServiceCenterConfiguration().setCanOverwriteSwagger(
diff --git a/solutions/solution-basic/src/main/java/org/apache/servicecomb/solution/basic/health/HealthEndpoint.java b/solutions/solution-basic/src/main/java/org/apache/servicecomb/solution/basic/health/HealthEndpoint.java
index aae8aa48d..641a35ed6 100644
--- a/solutions/solution-basic/src/main/java/org/apache/servicecomb/solution/basic/health/HealthEndpoint.java
+++ b/solutions/solution-basic/src/main/java/org/apache/servicecomb/solution/basic/health/HealthEndpoint.java
@@ -30,5 +30,6 @@ public interface HealthEndpoint {
* the target instance is alive.
*/
@GET
+ @Path("/health")
boolean health(@QueryParam("instanceId") String instanceId, @QueryParam("registryName") String registryName);
}