diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java index 576d8ad1..0f1a55cd 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java @@ -65,6 +65,11 @@ public class ConfigClientProperties { */ public static final String AUTHORIZATION = "authorization"; + /** + * Default profile value. + */ + public static final String DEFAULT_PROFILE = "default"; + /** * Flag to say that remote configuration is enabled. Default true; */ @@ -74,7 +79,7 @@ public class ConfigClientProperties { * The default profile to use when fetching remote configuration (comma-separated). * Default is "default". */ - private String profile = "default"; + private String profile = DEFAULT_PROFILE; /** * Name of application used to fetch remote properties. diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataResource.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataResource.java index e567b725..95a1b9b3 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataResource.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataResource.java @@ -16,6 +16,7 @@ package org.springframework.cloud.config.client; +import java.util.List; import java.util.Objects; import org.springframework.boot.context.config.ConfigDataResource; @@ -46,10 +47,12 @@ public class ConfigServerConfigDataResource extends ConfigDataResource { } public String getProfiles() { - if (StringUtils.hasText(properties.getProfile())) { + List accepted = profiles.getAccepted(); + if (StringUtils.hasText(properties.getProfile()) + && !properties.getProfile().equals(ConfigClientProperties.DEFAULT_PROFILE)) { return properties.getProfile(); } - return StringUtils.collectionToCommaDelimitedString(profiles.getAccepted()); + return StringUtils.collectionToCommaDelimitedString(accepted); } @Override diff --git a/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolverTests.java b/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolverTests.java index 499af5d7..b4e75145 100644 --- a/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolverTests.java +++ b/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolverTests.java @@ -16,6 +16,7 @@ package org.springframework.cloud.config.client; +import java.util.Collections; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -80,9 +81,22 @@ public class ConfigServerConfigDataLocationResolverTests { assertThat(resource.getProfiles()).isEqualTo("myprofile"); } + @Test + void configClientSpringProfilesActiveOverridesDefaultClientProfiles() { + ConfigServerConfigDataResource resource = testResolveProvileSpecific("myactiveprofile"); + assertThat(resource.getProfiles()).isEqualTo("myactiveprofile"); + } + private ConfigServerConfigDataResource testResolveProvileSpecific() { + return testResolveProvileSpecific("default"); + } + + private ConfigServerConfigDataResource testResolveProvileSpecific(String activeProfile) { when(context.getBootstrapContext()).thenReturn(mock(ConfigurableBootstrapContext.class)); Profiles profiles = mock(Profiles.class); + if (activeProfile != null) { + when(profiles.getAccepted()).thenReturn(Collections.singletonList(activeProfile)); + } List resources = this.resolver.resolveProfileSpecific(context, ConfigDataLocation.of("configserver:"), profiles);