diff --git a/CHANGELOG.md b/CHANGELOG.md index a855ed60ac..64e3ed1327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,5 +23,6 @@ - [fix: fix lossless test case unstable issues.](https://github.com/Tencent/spring-cloud-tencent/pull/1324) - [feat:support consul service update task.](https://github.com/Tencent/spring-cloud-tencent/pull/1329) - [fix:fix app starting failed when user using custom OpenAPI bean.](https://github.com/Tencent/spring-cloud-tencent/pull/1330) +- [feat:support consul config data.](https://github.com/Tencent/spring-cloud-tencent/pull/1331) - [fix: move ConditionalOnTsfEnabled to spring-cloud-tencent-commons and fix PolarisInetUtilsAutoConfiguration.](https://github.com/Tencent/spring-cloud-tencent/pull/1354) - [fix: memory cost too many when using wildcard feign calls](https://github.com/Tencent/spring-cloud-tencent/pull/1356) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java index 9fdc8fb226..b7be26460c 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java @@ -36,6 +36,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; import org.springframework.core.env.Environment; /** @@ -84,6 +85,7 @@ public ConfigurationModifier configurationModifier(PolarisConfigProperties polar } @Bean + @Primary @ConditionalOnMissingBean(search = SearchStrategy.CURRENT) @ConditionalOnReflectRefreshType public ConfigurationPropertiesRebinder affectedConfigurationPropertiesRebinder( diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java index e50eb6baee..56a3d08ade 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java @@ -117,6 +117,9 @@ private void afterLocatePolarisConfigExtension(CompositePropertySource composite } private void initInternalConfigFiles(CompositePropertySource compositePropertySource) { + if (!polarisConfigProperties.isInternalEnabled()) { + return; + } List internalConfigFiles = getInternalConfigFiles(); for (ConfigFileMetadata configFile : internalConfigFiles) { diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigPropertyAutoRefresher.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigPropertyAutoRefresher.java index 6bc5206d93..dc6989066e 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigPropertyAutoRefresher.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigPropertyAutoRefresher.java @@ -18,14 +18,17 @@ package com.tencent.cloud.polaris.config.adapter; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.config.logger.PolarisConfigLoggerContext; +import com.tencent.polaris.configuration.api.core.ConfigKVFile; import com.tencent.polaris.configuration.api.core.ConfigKVFileChangeListener; import com.tencent.polaris.configuration.api.core.ConfigPropertyChangeInfo; +import com.tencent.polaris.configuration.client.internal.CompositeConfigFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,8 +82,18 @@ private void registerPolarisConfigPublishEvent() { // register polaris config publish event for (PolarisPropertySource polarisPropertySource : polarisPropertySources) { - registerPolarisConfigPublishChangeListener(polarisPropertySource); - customRegisterPolarisConfigPublishChangeListener(polarisPropertySource); + if (polarisPropertySource.getConfigKVFile() instanceof CompositeConfigFile) { + CompositeConfigFile configKVFile = (CompositeConfigFile) polarisPropertySource.getConfigKVFile(); + for (ConfigKVFile cf : configKVFile.getConfigKVFiles()) { + PolarisPropertySource p = new PolarisPropertySource(cf.getNamespace(), cf.getFileGroup(), cf.getFileName(), cf, new HashMap<>()); + registerPolarisConfigPublishChangeListener(p); + customRegisterPolarisConfigPublishChangeListener(p); + } + } + else { + registerPolarisConfigPublishChangeListener(polarisPropertySource); + customRegisterPolarisConfigPublishChangeListener(polarisPropertySource); + } } } @@ -93,6 +106,7 @@ private void customInitRegisterPolarisConfig(PolarisConfigPropertyAutoRefresher } public void registerPolarisConfigPublishChangeListener(PolarisPropertySource polarisPropertySource) { + LOGGER.info("{} will register polaris config publish listener", polarisPropertySource.getPropertySourceName()); polarisPropertySource.getConfigKVFile() .addChangeListener((ConfigKVFileChangeListener) configKVFileChangeEvent -> { diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySource.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySource.java index c1dcefa51e..34da593761 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySource.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySource.java @@ -20,6 +20,7 @@ import java.util.Map; +import com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils; import com.tencent.polaris.configuration.api.core.ConfigKVFile; import org.springframework.core.env.MapPropertySource; @@ -40,7 +41,7 @@ public class PolarisPropertySource extends MapPropertySource { private final ConfigKVFile configKVFile; public PolarisPropertySource(String namespace, String group, String fileName, ConfigKVFile configKVFile, Map source) { - super(namespace + "-" + group + "-" + fileName, source); + super(PolarisPropertySourceUtils.generateName(namespace, group, fileName), source); this.namespace = namespace; this.group = group; @@ -64,7 +65,7 @@ public String getPropertySourceName() { return namespace + "-" + group + "-" + fileName; } - ConfigKVFile getConfigKVFile() { + public ConfigKVFile getConfigKVFile() { return configKVFile; } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java index 38687ddd8e..4586134eef 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java @@ -91,6 +91,11 @@ public class PolarisConfigProperties { */ private String localFileRootPath = "./polaris/backup/config"; + /** + * If internal config file enabled. + */ + private boolean internalEnabled = true; + public boolean isEnabled() { return enabled; } @@ -179,6 +184,14 @@ public void setLocalFileRootPath(String localFileRootPath) { this.localFileRootPath = localFileRootPath; } + public boolean isInternalEnabled() { + return internalEnabled; + } + + public void setInternalEnabled(boolean internalEnabled) { + this.internalEnabled = internalEnabled; + } + @Override public String toString() { return "PolarisConfigProperties{" + @@ -193,6 +206,7 @@ public String toString() { ", groups=" + groups + ", dataSource='" + dataSource + '\'' + ", localFileRootPath='" + localFileRootPath + '\'' + + ", internalEnabled=" + internalEnabled + '}'; } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java index eeefd2d04f..58adcb0a89 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java @@ -18,10 +18,13 @@ package com.tencent.cloud.polaris.config.configdata; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import com.tencent.cloud.polaris.config.adapter.PolarisConfigCustomExtensionLayer; import com.tencent.cloud.polaris.config.adapter.PolarisConfigFilePuller; +import com.tencent.cloud.polaris.config.adapter.PolarisServiceLoaderUtil; import com.tencent.cloud.polaris.config.config.ConfigFileGroup; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.context.PolarisSDKContextManager; @@ -38,6 +41,7 @@ import org.springframework.boot.context.config.Profiles; import org.springframework.boot.logging.DeferredLogFactory; import org.springframework.core.env.CompositePropertySource; +import org.springframework.core.env.PropertySource; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -59,6 +63,7 @@ public class PolarisConfigDataLoader implements ConfigDataLoader> propertySourceList = new ArrayList<>(compositePropertySource.getPropertySources()); + Collections.reverse(propertySourceList); + return new ConfigData(propertySourceList, getOptions(resource)); } private CompositePropertySource locate(ConfigurableBootstrapContext bootstrapContext, @@ -97,16 +104,21 @@ private CompositePropertySource locate(ConfigurableBootstrapContext bootstrapCon if (null == this.puller) { this.puller = PolarisConfigFilePuller.get(resource.getPolarisContextProperties(), configFileService); } + // load custom config extension files + if (polarisConfigCustomExtensionLayer != null) { + polarisConfigCustomExtensionLayer.initConfigFiles(null, compositePropertySource, configFileService); + } + // load spring boot default config files + PolarisConfigProperties polarisConfigProperties = resource.getPolarisConfigProperties(); Profiles profiles = resource.getProfiles(); - if (INTERNAL_CONFIG_FILES_LOADED.compareAndSet(false, true)) { + if (polarisConfigProperties.isInternalEnabled() && INTERNAL_CONFIG_FILES_LOADED.compareAndSet(false, true)) { log.info("loading internal config files"); String[] activeProfiles = profiles.getActive().toArray(new String[] {}); String[] defaultProfiles = profiles.getDefault().toArray(new String[] {}); this.puller.initInternalConfigFiles( compositePropertySource, activeProfiles, defaultProfiles, resource.getServiceName()); } - - PolarisConfigProperties polarisConfigProperties = resource.getPolarisConfigProperties(); + // load custom config files if (!CollectionUtils.isEmpty(polarisConfigProperties.getGroups()) && CUSTOM_POLARIS_CONFIG_FILE_LOADED.compareAndSet(false, true)) { log.info("loading custom config files"); @@ -118,6 +130,10 @@ private CompositePropertySource locate(ConfigurableBootstrapContext bootstrapCon log.info("loading config data config file, group:" + resource.getGroupName() + " file: " + resource.getFileName()); this.puller.initCustomPolarisConfigFile(compositePropertySource, configFileGroup(resource)); } + if (polarisConfigCustomExtensionLayer != null) { + polarisConfigCustomExtensionLayer.executeAfterLocateConfigReturning(compositePropertySource); + } + return compositePropertySource; } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigAutoConfiguration.java index 11f75ff446..996670f8ab 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigAutoConfiguration.java @@ -27,7 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -46,8 +45,7 @@ public class PolarisAdaptorTsfConfigAutoConfiguration { { System.setProperty("spring.cloud.polaris.config.refresh-type", "refresh_context"); - LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigAutoConfiguration init set spring.cloud.polaris.config.refresh-type to refresh_context"); + LOGGER.info("PolarisAdaptorTsfConfigAutoConfiguration init set spring.cloud.polaris.config.refresh-type to refresh_context"); } @Bean @@ -65,7 +63,7 @@ public TsfConsulConfigRefreshEventListener polarisAdaptorTsfConsulRefreshEventLi */ @Bean @ConditionalOnMissingBean - @ConditionalOnExpression("${spring.cloud.consul.config.enabled:true} == false and ${tsf.config.instance.released-config.lookup.enabled:true} == true") + @ConditionalOnProperty(name = "tsf.config.instance.released-config.lookup.enabled", matchIfMissing = true) public PolarisAdaptorTsfConfigController polarisAdaptorTsfConfigController() { return new PolarisAdaptorTsfConfigController(); } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigBootstrapConfiguration.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigBootstrapConfiguration.java index 3c927ee636..84a3ee6527 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigBootstrapConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/PolarisAdaptorTsfConfigBootstrapConfiguration.java @@ -22,7 +22,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; /** * @author juanyinyang @@ -32,7 +31,6 @@ @ConditionalOnProperty("spring.cloud.polaris.enabled") @ConditionalOnTsfEnabled @ConditionalOnPolarisConfigEnabled -@Import(PolarisAdaptorTsfConfigAutoConfiguration.class) public class PolarisAdaptorTsfConfigBootstrapConfiguration { diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/adaptor/PolarisAdaptorTsfConfigExtensionLayer.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/adaptor/PolarisAdaptorTsfConfigExtensionLayer.java index 94d32cff0b..712d7621b1 100755 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/adaptor/PolarisAdaptorTsfConfigExtensionLayer.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/adaptor/PolarisAdaptorTsfConfigExtensionLayer.java @@ -17,8 +17,8 @@ package com.tencent.cloud.polaris.config.tsf.adaptor; -import java.util.Arrays; -import java.util.HashSet; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -30,14 +30,13 @@ import com.tencent.cloud.polaris.config.adapter.PolarisPropertySource; import com.tencent.cloud.polaris.config.adapter.PolarisPropertySourceManager; import com.tencent.cloud.polaris.config.enums.ConfigFileFormat; -import com.tencent.cloud.polaris.config.tsf.cache.PolarisPropertyCache; import com.tencent.cloud.polaris.config.tsf.encrypt.EncryptConfig; +import com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils; import com.tencent.polaris.configuration.api.core.ConfigFileGroup; -import com.tencent.polaris.configuration.api.core.ConfigFileGroupChangeListener; -import com.tencent.polaris.configuration.api.core.ConfigFileGroupChangedEvent; import com.tencent.polaris.configuration.api.core.ConfigFileMetadata; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.api.core.ConfigKVFile; +import com.tencent.polaris.configuration.client.internal.CompositeConfigFile; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -102,16 +101,41 @@ public boolean isEnabled() { @Override public void initConfigFiles(Environment environment, CompositePropertySource compositePropertySource, ConfigFileService configFileService) { - String tsfApplicationId = environment.getProperty(TSF_APPLICATION_ID); - String tsfGroupId = environment.getProperty(TSF_GROUP_ID); - String tsfNamespaceId = environment.getProperty(TSF_NAMESPACE_ID); - String polarisAdaptorTsfConfigFormat = environment.getProperty(POLARIS_ADAPTOR_TSF_CONFIG_FORMAT); + String tsfApplicationId = ""; + String tsfGroupId = ""; + String tsfNamespaceId = ""; + String polarisAdaptorTsfConfigFormat = ""; + if (environment != null) { + tsfApplicationId = environment.getProperty(TSF_APPLICATION_ID); + tsfGroupId = environment.getProperty(TSF_GROUP_ID); + tsfNamespaceId = environment.getProperty(TSF_NAMESPACE_ID); + polarisAdaptorTsfConfigFormat = environment.getProperty(POLARIS_ADAPTOR_TSF_CONFIG_FORMAT); + } + else { + tsfApplicationId = System.getProperty(TSF_APPLICATION_ID); + if (StringUtils.isEmpty(tsfApplicationId)) { + tsfApplicationId = System.getenv(TSF_APPLICATION_ID); + } + tsfGroupId = System.getProperty(TSF_GROUP_ID); + if (StringUtils.isEmpty(tsfGroupId)) { + tsfGroupId = System.getenv(TSF_GROUP_ID); + } + tsfNamespaceId = System.getProperty(TSF_NAMESPACE_ID); + if (StringUtils.isEmpty(tsfNamespaceId)) { + tsfNamespaceId = System.getenv(TSF_NAMESPACE_ID); + } + polarisAdaptorTsfConfigFormat = System.getProperty(POLARIS_ADAPTOR_TSF_CONFIG_FORMAT); + if (StringUtils.isEmpty(polarisAdaptorTsfConfigFormat)) { + polarisAdaptorTsfConfigFormat = System.getenv(POLARIS_ADAPTOR_TSF_CONFIG_FORMAT); + } + } + LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer initConfigFiles start, tsfNamespaceId:{}, tsfApplicationId:{}, tsfGroupId:{}", + "PolarisAdaptorTsfConfigExtensionLayer initConfigFiles start, tsfNamespaceId:{}, tsfApplicationId:{}, tsfGroupId:{}", tsfNamespaceId, tsfApplicationId, tsfGroupId); loadAllPolarisConfigFile(compositePropertySource, configFileService, tsfNamespaceId, tsfApplicationId, tsfGroupId, polarisAdaptorTsfConfigFormat); - LOGGER.info("[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer initConfigFiles end"); + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer initConfigFiles end"); } private void loadAllPolarisConfigFile(CompositePropertySource compositePropertySource, @@ -130,126 +154,142 @@ private void loadAllPolarisConfigFile(CompositePropertySource compositePropertyS compositePropertySource, configFileService, pubConfigGroup); } - private PolarisPropertySource loadPolarisPropertySource(String namespace, String group, String fileName, - String polarisAdaptorTsfConfigFormat, ConfigFileService configFileService) { - ConfigKVFile configKVFile; - if (StringUtils.isNotBlank(polarisAdaptorTsfConfigFormat)) { - switch (polarisAdaptorTsfConfigFormat) { - case "properties": - configKVFile = configFileService.getConfigPropertiesFile(namespace, group, fileName); - case "yaml": - default: + private PolarisPropertySource loadPolarisPropertySource(String configFileGroupNamespace, String configFileGroupName, + List configFileMetadataList, String polarisAdaptorTsfConfigFormat, + ConfigFileService configFileService) { + List configKVFiles = new ArrayList<>(); + + for (ConfigFileMetadata configFileMetadata : configFileMetadataList) { + ConfigKVFile configKVFile; + String namespace = configFileMetadata.getNamespace(); + String group = configFileMetadata.getFileGroup(); + String fileName = configFileMetadata.getFileName(); + if (StringUtils.isNotBlank(polarisAdaptorTsfConfigFormat)) { + switch (polarisAdaptorTsfConfigFormat) { + case "properties": + configKVFile = configFileService.getConfigPropertiesFile(namespace, group, fileName); + break; + case "yaml": + default: + configKVFile = configFileService.getConfigYamlFile(namespace, group, fileName); + } + } + // unknown extension is resolved as yaml file + else if (ConfigFileFormat.isYamlFile(fileName) || ConfigFileFormat.isUnknownFile(fileName)) { configKVFile = configFileService.getConfigYamlFile(namespace, group, fileName); } - } - // unknown extension is resolved as yaml file - else if (ConfigFileFormat.isYamlFile(fileName) || ConfigFileFormat.isUnknownFile(fileName)) { - configKVFile = configFileService.getConfigYamlFile(namespace, group, fileName); - } - else if (ConfigFileFormat.isPropertyFile(fileName)) { - configKVFile = configFileService.getConfigPropertiesFile(namespace, group, fileName); - } - else { - LOGGER.warn("[SCTT Config] Unsupported config file. namespace = {}, group = {}, fileName = {}", namespace, - group, fileName); + else if (ConfigFileFormat.isPropertyFile(fileName)) { + configKVFile = configFileService.getConfigPropertiesFile(namespace, group, fileName); + } + else { + LOGGER.warn("Unsupported config file. namespace = {}, group = {}, fileName = {}", namespace, + group, fileName); - throw new IllegalStateException("Only configuration files in the format of properties / yaml / yaml" - + " can be injected into the spring context"); + throw new IllegalStateException("Only configuration files in the format of properties / yaml / yaml" + + " can be injected into the spring context"); + } + configKVFiles.add(configKVFile); } + CompositeConfigFile compositeConfigFile = new CompositeConfigFile(configKVFiles); + Map map = new ConcurrentHashMap<>(); - for (String key : configKVFile.getPropertyNames()) { - String value = configKVFile.getProperty(key, null); + for (String key : compositeConfigFile.getPropertyNames()) { + String value = compositeConfigFile.getProperty(key, null); if (EncryptConfig.needDecrypt(value)) { - LOGGER.debug("[SCTT Config] Need Decrypt {}: {}", key, value); + LOGGER.debug("Need Decrypt {}: {}", key, value); value = EncryptConfig.getProvider() .decrypt(EncryptConfig.realContent(value), EncryptConfig.getPassword()); } map.put(key, value); } - return new PolarisPropertySource(namespace, group, fileName, configKVFile, map); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("namespace='" + configFileGroupNamespace + '\'' + + ", group='" + configFileGroupName + '\'' + ", fileName='" + compositeConfigFile + '\'' + + ", map='" + map + '\''); + } + + return new PolarisPropertySource(configFileGroupNamespace, configFileGroupName, "", compositeConfigFile, map); } private void loadPolarisConfigFile(String namespace, String tsfApplicationId, String tsfGroupId, String polarisAdaptorTsfConfigFormat, CompositePropertySource compositePropertySource, ConfigFileService configFileService, String configGroup) { LOGGER.debug( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer loadPolarisConfigFile start, namespace:{}, group:{}", + "PolarisAdaptorTsfConfigExtensionLayer loadPolarisConfigFile start, namespace:{}, group:{}", namespace, configGroup); ConfigFileGroup configFileGroup = configFileService.getConfigFileGroup(namespace, configGroup); if (configFileGroup == null) { throw new IllegalStateException( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer configFileGroup is null"); + "PolarisAdaptorTsfConfigExtensionLayer configFileGroup is null"); } List configFileMetadataList = configFileGroup.getConfigFileMetadataList(); if (!CollectionUtils.isEmpty(configFileMetadataList)) { - LOGGER.info("[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer getConfigFileMetadataList:{}", + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer getConfigFileMetadataList:{}", configFileMetadataList); - for (ConfigFileMetadata configFile : configFileMetadataList) { - PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(configFile.getNamespace(), - configFile.getFileGroup(), configFile.getFileName(), polarisAdaptorTsfConfigFormat, - configFileService); + } + else { + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer getConfigFileMetadataList empty. file = {}:{}", + configFileGroup.getNamespace(), configFileGroup.getNamespace()); + } + PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(namespace, configGroup, + configFileMetadataList, polarisAdaptorTsfConfigFormat, configFileService); - compositePropertySource.addPropertySource(polarisPropertySource); + compositePropertySource.addPropertySource(polarisPropertySource); - PolarisPropertySourceManager.addPropertySource(polarisPropertySource); + PolarisPropertySourceManager.addPropertySource(polarisPropertySource); + + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer Load and inject polaris config file from config group:{}. file = {}", + configGroup, polarisPropertySource.getConfigKVFile()); - LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer Load and inject polaris config file from config group:{}. file = {}", - configGroup, configFile); - } - } String namespaceConfigGroup = namespace + "-" + configGroup; // 用ConcurrentHashSet保证不重复添加ConfigFileGroupChangeListener if (registedConfigFileGroupListenerSets.add(namespaceConfigGroup)) { - LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer configFileGroup addChangeListener namespaceConfigGroup:{}", + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer configFileGroup addChangeListener namespaceConfigGroup:{}", namespaceConfigGroup); - configFileGroup.addChangeListener(new ConfigFileGroupChangeListener() { - - @Override - public void onChange(ConfigFileGroupChangedEvent event) { - try { - LOGGER.info("[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer receive onChange event:{}", - event); - List configFileMetadataList = event.getConfigFileMetadataList(); - if (CollectionUtils.isEmpty(configFileMetadataList)) { - LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer receive configFileMetadataList is empty"); - return; - } - boolean needRefreshAll = false; - for (ConfigFileMetadata configFile : configFileMetadataList) { - PolarisPropertySource polarisPropertySource = loadPolarisPropertySource( - configFile.getNamespace(), configFile.getFileGroup(), configFile.getFileName(), - polarisAdaptorTsfConfigFormat, configFileService); + configFileGroup.addChangeListener(event -> { + try { + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer receive onChange event:{}", + event); + List oldConfigFileMetadataList = event.getOldConfigFileMetadataList(); + List newConfigFileMetadataList = event.getNewConfigFileMetadataList(); + + List toUnregister = calculateUnregister(oldConfigFileMetadataList, newConfigFileMetadataList); + toUnregister.forEach(registedPolarisPropertySets::remove); + + if (CollectionUtils.isEmpty(newConfigFileMetadataList)) { + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer receive configFileMetadataList is empty"); + } + else { + PolarisPropertySource polarisPropertySource1 = loadPolarisPropertySource( + event.getConfigFileGroupMetadata().getNamespace(), + event.getConfigFileGroupMetadata().getFileGroupName(), + newConfigFileMetadataList, polarisAdaptorTsfConfigFormat, configFileService); + // 用ConcurrentHashSet保证不重复注册PolarisConfigPublishChangeListener + CompositeConfigFile configKVFile = (CompositeConfigFile) polarisPropertySource1.getConfigKVFile(); + for (ConfigKVFile cf : configKVFile.getConfigKVFiles()) { LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer Load and inject polaris config file from onChange event config group:{}. file = {}", - configGroup, configFile); - // 用ConcurrentHashSet保证不重复注册PolarisConfigPublishChangeListener - if (executeRegisterPublishChangeListener(polarisPropertySource)) { - polarisConfigPropertyAutoRefresher.registerPolarisConfigPublishChangeListener( - polarisPropertySource); - needRefreshAll = true; + "PolarisAdaptorTsfConfigExtensionLayer Load and inject polaris config file from onChange event config group:{}. file = {}", + configGroup, cf); + PolarisPropertySource p = new PolarisPropertySource(cf.getNamespace(), cf.getFileGroup(), cf.getFileName(), cf, new HashMap<>()); + if (executeRegisterPublishChangeListener(p)) { + polarisConfigPropertyAutoRefresher.registerPolarisConfigPublishChangeListener(p); } } - if (needRefreshAll) { - LOGGER.info("[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer start refresh All Config"); - polarisConfigPropertyAutoRefresher.refreshConfigurationProperties(null); - } - } - catch (Exception e) { - LOGGER.info("[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer receive onChange exception:", - e); } + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer start refresh All Config"); + polarisConfigPropertyAutoRefresher.refreshConfigurationProperties(null); + } + catch (Exception e) { + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer receive onChange exception:", + e); } }); } - LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer loadPolarisConfigFile end, namespace:{}, group:{}", + LOGGER.info("PolarisAdaptorTsfConfigExtensionLayer loadPolarisConfigFile end, namespace:{}, group:{}", namespace, configGroup); } @@ -258,10 +298,7 @@ public void onChange(ConfigFileGroupChangedEvent event) { */ @Override public void executeAfterLocateConfigReturning(CompositePropertySource compositePropertySource) { - PolarisPropertyCache.getInstance().clear(); - PolarisPropertyCache.getInstance().getCache() - .addAll(new HashSet<>(Arrays.asList(compositePropertySource.getPropertyNames()))); - LOGGER.info("[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer executeAfterLocateConfigReturning finished"); + } /** @@ -270,7 +307,7 @@ public void executeAfterLocateConfigReturning(CompositePropertySource compositeP @Override public void initRegisterConfig(PolarisConfigPropertyAutoRefresher polarisConfigPropertyAutoRefresher) { LOGGER.info( - "[SCTT Config] PolarisAdaptorTsfConfigExtensionLayer initRegisterConfig polarisConfigPropertyAutoRefresher:{}", + "PolarisAdaptorTsfConfigExtensionLayer initRegisterConfig polarisConfigPropertyAutoRefresher:{}", polarisConfigPropertyAutoRefresher.getClass()); this.polarisConfigPropertyAutoRefresher = polarisConfigPropertyAutoRefresher; } @@ -283,9 +320,27 @@ public boolean executeRegisterPublishChangeListener(PolarisPropertySource polari boolean isRegisterSuccess = registedPolarisPropertySets.add(polarisPropertySource.getPropertySourceName()); if (isRegisterSuccess) { // 已防止重复注册,仅打印注册成功的即可 - LOGGER.info("[SCTT Config] start to register configFile polarisConfigPublishChangeListener:{}", + LOGGER.info("start to register configFile polarisConfigPublishChangeListener:{}", polarisPropertySource); } return isRegisterSuccess; } + + private List calculateUnregister(List oldConfigFileMetadataList, List newConfigFileMetadataList) { + List newNameList = new ArrayList<>(); + for (ConfigFileMetadata configFileMetadata : newConfigFileMetadataList) { + newNameList.add(PolarisPropertySourceUtils.generateName(configFileMetadata.getNamespace(), + configFileMetadata.getFileGroup(), configFileMetadata.getFileName())); + } + + List toUnregister = new ArrayList<>(); + for (ConfigFileMetadata configFileMetadata : oldConfigFileMetadataList) { + String oldName = (PolarisPropertySourceUtils.generateName(configFileMetadata.getNamespace(), + configFileMetadata.getFileGroup(), configFileMetadata.getFileName())); + if (!newNameList.contains(oldName)) { + toUnregister.add(oldName); + } + } + return toUnregister; + } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/controller/PolarisAdaptorTsfConfigController.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/controller/PolarisAdaptorTsfConfigController.java index b8719b0fbf..bf9a044a26 100755 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/controller/PolarisAdaptorTsfConfigController.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/controller/PolarisAdaptorTsfConfigController.java @@ -18,11 +18,15 @@ package com.tencent.cloud.polaris.config.tsf.controller; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; -import com.tencent.cloud.polaris.config.tsf.cache.PolarisPropertyCache; +import com.tencent.cloud.polaris.config.adapter.PolarisPropertySource; +import com.tencent.cloud.polaris.config.adapter.PolarisPropertySourceManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +48,7 @@ public class PolarisAdaptorTsfConfigController { Environment environment; public PolarisAdaptorTsfConfigController() { - LOG.info("[SCTT Config] init PolarisAdaptorTsfConfigController"); + LOG.info("init PolarisAdaptorTsfConfigController"); } /** @@ -52,7 +56,13 @@ public PolarisAdaptorTsfConfigController() { */ @RequestMapping("/tsf/innerApi/config/findAllConfig") public Map findAllConfig() { - Set keys = PolarisPropertyCache.getInstance().getCache(); + List propertySourceList = PolarisPropertySourceManager.getAllPropertySources(); + + Set keys = new HashSet<>(); + for (PolarisPropertySource propertySource : propertySourceList) { + keys.addAll(Arrays.asList(propertySource.getPropertyNames())); + } + return keys.stream() .collect(HashMap::new, (map, key) -> map.put(key, environment.getProperty(key)), HashMap::putAll); } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/ConfigEncryptAESProvider.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/ConfigEncryptAESProvider.java index 51f99e8bfe..d6084889e1 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/ConfigEncryptAESProvider.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/ConfigEncryptAESProvider.java @@ -30,7 +30,7 @@ public String encrypt(String content, String password) { return EncryptAlgorithm.AES256.encrypt(content, password); } catch (Exception e) { - log.error("[SCTT Config] Error on encrypting.", e); + log.error("Error on encrypting.", e); throw e; } } @@ -41,7 +41,7 @@ public String decrypt(String encryptedContent, String password) { return EncryptAlgorithm.AES256.decrypt(encryptedContent, password); } catch (Exception e) { - log.error("[SCTT Config] Error on decrypting.", e); + log.error("Error on decrypting.", e); throw e; } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/EncryptAlgorithm.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/EncryptAlgorithm.java index 9a79599308..1ce56b75a7 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/EncryptAlgorithm.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/encrypt/EncryptAlgorithm.java @@ -71,7 +71,7 @@ public static final String encrypt(String content, String password) { return new String(enryptedContent); } catch (Exception e) { - throw new RuntimeException("[SCTT Encrypt] Failed encrypt.", e); + throw new RuntimeException("Failed encrypt.", e); } } @@ -110,7 +110,7 @@ public static final String decrypt(String encryptedContent, String password) { return new String(result); } catch (Exception e) { - throw new RuntimeException("[SCTT Encrypt] Failed decrypt.", e); + throw new RuntimeException("Failed decrypt.", e); } } } @@ -139,7 +139,7 @@ public static class PasswordNotFoundException extends RuntimeException { private static final long serialVersionUID = -2843758461182470411L; public PasswordNotFoundException() { - super("[SCTT Encrypt] Password not found."); + super("Password not found."); } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/cache/PolarisPropertyCache.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/utils/PolarisPropertySourceUtils.java similarity index 58% rename from spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/cache/PolarisPropertyCache.java rename to spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/utils/PolarisPropertySourceUtils.java index 4e80d03865..6eea01f4ba 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/tsf/cache/PolarisPropertyCache.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/utils/PolarisPropertySourceUtils.java @@ -14,35 +14,21 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package com.tencent.cloud.polaris.config.tsf.cache; - -import java.util.HashSet; -import java.util.Set; +package com.tencent.cloud.polaris.config.utils; /** - * @author juanyinyang - * @Date 2023年8月8日 下午4:56:18 + * Utils for PolarisPropertySource. + * + * @author Haotian Zhang */ -public final class PolarisPropertyCache { - - private static final PolarisPropertyCache instance = new PolarisPropertyCache(); - - private final Set cache = new HashSet<>(); +public final class PolarisPropertySourceUtils { - private PolarisPropertyCache() { - - } - - public static PolarisPropertyCache getInstance() { - return instance; - } + private PolarisPropertySourceUtils() { - public Set getCache() { - return cache; } - public void clear() { - cache.clear(); + public static String generateName(String namespace, String group, String fileName) { + return namespace + "-" + group + "-" + fileName; } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java index 9a397ac496..42dbd028f2 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java +++ b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java @@ -91,6 +91,7 @@ public void testLoadApplicationPropertiesFile() { when(polarisConfigProperties.isEnabled()).thenReturn(true); when(polarisConfigProperties.getGroups()).thenReturn(null); + when(polarisConfigProperties.isInternalEnabled()).thenReturn(true); when(environment.getActiveProfiles()).thenReturn(new String[] {}); PropertySource propertySource = locator.locate(environment); @@ -139,6 +140,7 @@ public void testActiveProfileFilesPriorityBiggerThanDefault() { when(polarisConfigProperties.isEnabled()).thenReturn(true); when(polarisConfigProperties.getGroups()).thenReturn(null); + when(polarisConfigProperties.isInternalEnabled()).thenReturn(true); when(environment.getActiveProfiles()).thenReturn(new String[] {"dev"}); PropertySource propertySource = locator.locate(environment); @@ -177,6 +179,7 @@ public void testGetCustomFiles() { when(polarisConfigProperties.isEnabled()).thenReturn(true); when(polarisConfigProperties.getGroups()).thenReturn(customFiles); + when(polarisConfigProperties.isInternalEnabled()).thenReturn(true); when(environment.getActiveProfiles()).thenReturn(new String[] {}); // file1.properties diff --git a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java index 86cacfd2c4..66d5abb965 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java +++ b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java @@ -109,6 +109,7 @@ public void loadConfigDataInternalConfigFilesTest() { when(polarisContextProperties.getService()).thenReturn(testServiceName); when(polarisConfigProperties.getGroups()).thenReturn(null); + when(polarisConfigProperties.isInternalEnabled()).thenReturn(true); when(profiles.getActive()).thenReturn(Lists.newArrayList()); PolarisConfigDataLoader polarisConfigDataLoader = new PolarisConfigDataLoader(new DeferredLogs()); @@ -187,6 +188,7 @@ public void loadConfigDataInternalConfigFilesTestWithProfile() { when(polarisContextProperties.getService()).thenReturn(testServiceName); when(polarisConfigProperties.getGroups()).thenReturn(null); + when(polarisConfigProperties.isInternalEnabled()).thenReturn(true); PolarisConfigDataLoader polarisConfigDataLoader = new PolarisConfigDataLoader(new DeferredLogs()); if (INTERNAL_CONFIG_FILES_LOADED.get()) { @@ -242,6 +244,7 @@ public void loadConfigDataCustomConfigFilesTestWithProfile() { when(polarisConfigDataResource.getGroupName()).thenReturn(customGroup); when(polarisConfigProperties.getGroups()).thenReturn(null); + when(polarisConfigProperties.isInternalEnabled()).thenReturn(true); when(profiles.getActive()).thenReturn(Lists.newArrayList()); // file1.properties diff --git a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/tsf/TsfContractProperties.java b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/tsf/TsfContractProperties.java index 64cd710512..997bfbc1dc 100644 --- a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/tsf/TsfContractProperties.java +++ b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/tsf/TsfContractProperties.java @@ -56,7 +56,7 @@ public class TsfContractProperties implements ExtendedContractProperties { @Override public boolean isEnabled() { - return enabled; + return false; } @Override diff --git a/spring-cloud-tencent-examples/tsf-example/provider-demo/pom.xml b/spring-cloud-tencent-examples/tsf-example/provider-demo/pom.xml index f5ed608fcc..348438516a 100644 --- a/spring-cloud-tencent-examples/tsf-example/provider-demo/pom.xml +++ b/spring-cloud-tencent-examples/tsf-example/provider-demo/pom.xml @@ -31,6 +31,14 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-bootstrap + diff --git a/spring-cloud-tencent-examples/tsf-example/provider-demo/src/main/resources/application.yml b/spring-cloud-tencent-examples/tsf-example/provider-demo/src/main/resources/bootstrap.yml similarity index 82% rename from spring-cloud-tencent-examples/tsf-example/provider-demo/src/main/resources/application.yml rename to spring-cloud-tencent-examples/tsf-example/provider-demo/src/main/resources/bootstrap.yml index d4ae0231b8..5e43105a24 100644 --- a/spring-cloud-tencent-examples/tsf-example/provider-demo/src/main/resources/application.yml +++ b/spring-cloud-tencent-examples/tsf-example/provider-demo/src/main/resources/bootstrap.yml @@ -3,8 +3,6 @@ server: spring: application: name: provider-demo - config: - import: optional:polaris cloud: polaris: namespace: default @@ -24,3 +22,9 @@ logging: name: /tsf-demo-logs/${spring.application.name}/root.log level: root: INFO +management: + endpoints: + web: + exposure: + include: + - polaris-config diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/logging/PolarisLoggingApplicationListener.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/logging/PolarisLoggingApplicationListener.java index d01ef8a7fb..67ad30a8b4 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/logging/PolarisLoggingApplicationListener.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/logging/PolarisLoggingApplicationListener.java @@ -23,6 +23,7 @@ import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; import org.springframework.boot.context.event.ApplicationFailedEvent; import org.springframework.boot.context.logging.LoggingApplicationListener; +import org.springframework.cloud.context.environment.EnvironmentChangeEvent; import org.springframework.context.ApplicationEvent; import org.springframework.context.event.GenericApplicationListener; import org.springframework.core.ResolvableType; @@ -45,7 +46,8 @@ public boolean supportsEventType(ResolvableType resolvableType) { return false; } return ApplicationEnvironmentPreparedEvent.class.isAssignableFrom(type) - || ApplicationFailedEvent.class.isAssignableFrom(type); + || ApplicationFailedEvent.class.isAssignableFrom(type) + || EnvironmentChangeEvent.class.isAssignableFrom(type); } @Override diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/tsf/env/TsfCoreEnvironmentPostProcessor.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/tsf/env/TsfCoreEnvironmentPostProcessor.java index 1ebd2d2bc6..1c2c258b7c 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/tsf/env/TsfCoreEnvironmentPostProcessor.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/tsf/env/TsfCoreEnvironmentPostProcessor.java @@ -106,14 +106,15 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringAp } else { defaultProperties.put("spring.cloud.polaris.config.enabled", "true"); + defaultProperties.put("spring.cloud.polaris.config.internal-enabled", "false"); defaultProperties.put("spring.cloud.polaris.config.data-source", "consul"); defaultProperties.put("spring.cloud.polaris.config.address", "http://" + tsfConsulIp + ":" + tsfConsulPort); defaultProperties.put("spring.cloud.polaris.config.port", tsfConsulPort); defaultProperties.put("spring.cloud.polaris.config.token", tsfConsulToken); defaultProperties.put("spring.cloud.polaris.config.groups[0].namespace", "config"); defaultProperties.put("spring.cloud.polaris.config.groups[0].name", "application"); - defaultProperties.put("spring.cloud.polaris.config.groups[0].files[0]", tsfNamespaceId + "/"); - defaultProperties.put("spring.cloud.polaris.config.groups[0].files[1]", tsfApplicationId + "/" + tsfGroupId + "/"); + defaultProperties.put("spring.cloud.polaris.config.groups[0].files[0]", tsfApplicationId + "/" + tsfGroupId + "/"); + defaultProperties.put("spring.cloud.polaris.config.groups[0].files[1]", tsfNamespaceId + "/"); } // tse_polaris_ip