From a95f1300ada283f01a9a2bd3158d350e9e8044fd Mon Sep 17 00:00:00 2001 From: spencergibb Date: Fri, 8 Jan 2021 12:54:46 -0500 Subject: [PATCH] Ensures spring.cloud.config.name takes precedence. spring.cloud.config.name should only default to spring.application.name, not be overridden by it. Fixes gh-1784 --- ...onfigServerConfigDataLocationResolver.java | 9 +++++--- ...ServerConfigDataLocationResolverTests.java | 21 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolver.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolver.java index d7bef3c3..ac110d02 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolver.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerConfigDataLocationResolver.java @@ -71,9 +71,12 @@ public class ConfigServerConfigDataLocationResolver ConfigClientProperties configClientProperties = binder .bind(ConfigClientProperties.PREFIX, Bindable.of(ConfigClientProperties.class), bindHandler) .orElseGet(ConfigClientProperties::new); - String applicationName = binder.bind("spring.application.name", Bindable.of(String.class), bindHandler) - .orElse("application"); - configClientProperties.setName(applicationName); + if (!StringUtils.hasText(configClientProperties.getName())) { + // default to spring.application.name if name isn't set + String applicationName = binder.bind("spring.application.name", Bindable.of(String.class), bindHandler) + .orElse("application"); + configClientProperties.setName(applicationName); + } return configClientProperties; } 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 b4e75145..ad46317e 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 @@ -87,6 +87,27 @@ public class ConfigServerConfigDataLocationResolverTests { assertThat(resource.getProfiles()).isEqualTo("myactiveprofile"); } + @Test + void configNameDefaultsToApplication() { + ConfigServerConfigDataResource resource = testResolveProvileSpecific(); + assertThat(resource.getProperties().getName()).isEqualTo("application"); + } + + @Test + void configNameDefaultsToSpringApplicationName() { + this.environment.setProperty("spring.application.name", "myapp"); + ConfigServerConfigDataResource resource = testResolveProvileSpecific(); + assertThat(resource.getProperties().getName()).isEqualTo("myapp"); + } + + @Test + void configNameOverridesSpringApplicationName() { + this.environment.setProperty("spring.application.name", "myapp"); + this.environment.setProperty(ConfigClientProperties.PREFIX + ".name", "myconfigname"); + ConfigServerConfigDataResource resource = testResolveProvileSpecific(); + assertThat(resource.getProperties().getName()).isEqualTo("myconfigname"); + } + private ConfigServerConfigDataResource testResolveProvileSpecific() { return testResolveProvileSpecific("default"); }