diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java index cbb937dd15..7a2292cfe2 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java @@ -69,7 +69,9 @@ public class EnvironmentEndpoint extends AbstractEndpoint> { EnumerablePropertySource enumerable = (EnumerablePropertySource) source; Map properties = new LinkedHashMap(); for (String name : enumerable.getPropertyNames()) { - Object resolved = resolver.getProperty(name, Object.class); + Object property = source.getProperty(name); + Object resolved = property instanceof String + ? resolver.resolvePlaceholders((String) property) : property; properties.put(name, sanitize(name, resolved)); } properties = postProcessSourceProperties(sourceName, properties); diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java index f2a7ffc364..807bcb8f9d 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java @@ -279,6 +279,26 @@ public class EnvironmentEndpointTests extends AbstractEndpointTestssingletonMap("a", "alpha"))); + propertySources.addFirst(new MapPropertySource("two", + Collections.singletonMap("a", "apple"))); + this.context.register(Config.class); + this.context.refresh(); + EnvironmentEndpoint report = getEndpointBean(); + Map env = report.invoke(); + Map sourceOne = (Map) env.get("one"); + assertThat(sourceOne).containsEntry("a", "alpha"); + Map sourceTwo = (Map) env.get("two"); + assertThat(sourceTwo).containsEntry("a", "apple"); + } + private void clearSystemProperties(String... properties) { for (String property : properties) { System.clearProperty(property);