diff --git a/CHANGELOG.md b/CHANGELOG.md index b47bd88c..c22458cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,3 +27,4 @@ - [fix:fix heartbeat interval different configuration from polaris-java SDK.](https://github.com/Tencent/spring-cloud-tencent/pull/560) - [Optimize: optimize report call result for restTemplate.](https://github.com/Tencent/spring-cloud-tencent/pull/562) - [feat:add spring-cloud-starter-tencent-all and quickstart examples.](https://github.com/Tencent/spring-cloud-tencent/pull/567) +- [fix:fix wrong internal config file load order.](https://github.com/Tencent/spring-cloud-tencent/pull/572) 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 a713cdb7..f71079ac 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 @@ -18,6 +18,8 @@ package com.tencent.cloud.polaris.config.adapter; +import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -123,47 +125,50 @@ public class PolarisConfigFileLocator implements PropertySourceLocator { // priority: application-${profile} > application > boostrap-${profile} > boostrap String[] activeProfiles = environment.getActiveProfiles(); - buildInternalConfigFiles(internalConfigFiles, namespace, serviceName, activeProfiles); - - // Compatible with defaultProfiles configuration - if (ArrayUtils.isEmpty(activeProfiles)) { - String[] defaultProfiles = environment.getDefaultProfiles(); - buildInternalConfigFiles(internalConfigFiles, namespace, serviceName, defaultProfiles); + String[] defaultProfiles = environment.getDefaultProfiles(); + List profileList = new ArrayList<>(); + if (ArrayUtils.isNotEmpty(activeProfiles)) { + profileList.addAll(Arrays.asList(activeProfiles)); } - - // build default config properties files . - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.yml")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.yml")); + else if (ArrayUtils.isNotEmpty(defaultProfiles)) { + profileList.addAll(Arrays.asList(defaultProfiles)); + } + // build application config files + buildInternalApplicationConfigFiles(internalConfigFiles, namespace, serviceName, profileList); + // build bootstrap config files + buildInternalBootstrapConfigFiles(internalConfigFiles, namespace, serviceName, profileList); return internalConfigFiles; } - private void buildInternalConfigFiles(List internalConfigFiles, String namespace, String serviceName, String[] profiles) { - - if (profiles != null) { - for (String profile : profiles) { - if (!StringUtils.hasText(profile)) { - continue; - } - - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".yml")); + private void buildInternalApplicationConfigFiles( + List internalConfigFiles, String namespace, String serviceName, List profileList) { + for (String profile : profileList) { + if (!StringUtils.hasText(profile)) { + continue; } + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".properties")); + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".yml")); + } + // build default config properties files. + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.properties")); + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.yml")); + } - for (String profile : profiles) { - if (!StringUtils.hasText(profile)) { - continue; - } - - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".yml")); + private void buildInternalBootstrapConfigFiles( + List internalConfigFiles, String namespace, String serviceName, List profileList) { + for (String profile : profileList) { + if (!StringUtils.hasText(profile)) { + continue; } + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".properties")); + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".yml")); } + // build default config properties files. + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.properties")); + internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.yml")); } - private void initCustomPolarisConfigFiles(CompositePropertySource compositePropertySource, List configFileGroups) { String namespace = polarisContextProperties.getNamespace();