Always obtain fresh PropertySources in ConfigurableEnvironmentPropertySource
Although it's unlikely that the implementation of getPropertySources() in a ConfigurableEnvironment would be overridden to return a different MutablePropertySources instance than the one that the ConfigurableEnvironment typically acts on, it is in fact possible. In light of that possibility, this commit refactors ConfigurableEnvironmentPropertySource so that it always obtains a fresh PropertySources reference. See gh-34861
This commit is contained in:
parent
65e30132f3
commit
7135527765
|
@ -227,19 +227,15 @@ public class PropertySourcesPlaceholderConfigurer extends PlaceholderConfigurerS
|
|||
*/
|
||||
private static class ConfigurableEnvironmentPropertySource extends PropertySource<ConfigurableEnvironment> {
|
||||
|
||||
private final PropertySources propertySources;
|
||||
|
||||
|
||||
ConfigurableEnvironmentPropertySource(ConfigurableEnvironment environment) {
|
||||
super(ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME, environment);
|
||||
this.propertySources = environment.getPropertySources();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getProperty(String name) {
|
||||
for (PropertySource<?> propertySource : this.propertySources) {
|
||||
for (PropertySource<?> propertySource : super.source.getPropertySources()) {
|
||||
Object candidate = propertySource.getProperty(name);
|
||||
if (candidate != null) {
|
||||
return candidate;
|
||||
|
@ -250,7 +246,7 @@ public class PropertySourcesPlaceholderConfigurer extends PlaceholderConfigurerS
|
|||
|
||||
@Override
|
||||
public boolean containsProperty(String name) {
|
||||
for (PropertySource<?> propertySource : this.propertySources) {
|
||||
for (PropertySource<?> propertySource : super.source.getPropertySources()) {
|
||||
if (propertySource.containsProperty(name)) {
|
||||
return true;
|
||||
}
|
||||
|
@ -260,7 +256,7 @@ public class PropertySourcesPlaceholderConfigurer extends PlaceholderConfigurerS
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConfigurableEnvironmentPropertySource {propertySources=" + this.propertySources + "}";
|
||||
return "ConfigurableEnvironmentPropertySource {propertySources=" + super.source.getPropertySources() + "}";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue