mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-07-15 01:07:30 +08:00
Fix logic affecting files loaded
The problem fixed here is that the Loader keeps track of the profiles it is going to look at for loading files, but ignores any that were already active in the Environment if the listener is called initially with spring.profiles.active not empty. Closes gh-4261
This commit is contained in:
parent
2e2ebeb9fa
commit
06bb6bd1e1
@ -314,17 +314,15 @@ public class ConfigFileApplicationListener
|
||||
maybeActivateProfiles(
|
||||
this.environment.getProperty(ACTIVE_PROFILES_PROPERTY));
|
||||
}
|
||||
else {
|
||||
// Pre-existing active profiles set via Environment.setActiveProfiles()
|
||||
// are additional profiles and config files are allowed to add more if
|
||||
// they want to, so don't call addActiveProfiles() here.
|
||||
List<String> list = new ArrayList<String>(
|
||||
Arrays.asList(this.environment.getActiveProfiles()));
|
||||
// Reverse them so the order is the same as from getProfilesForValue()
|
||||
// (last one wins when properties are eventually resolved)
|
||||
Collections.reverse(list);
|
||||
this.profiles.addAll(list);
|
||||
}
|
||||
// Pre-existing active profiles set via Environment.setActiveProfiles()
|
||||
// are additional profiles and config files are allowed to add more if
|
||||
// they want to, so don't call addActiveProfiles() here.
|
||||
List<String> list = new ArrayList<String>(
|
||||
Arrays.asList(this.environment.getActiveProfiles()));
|
||||
// Reverse them so the order is the same as from getProfilesForValue()
|
||||
// (last one wins when properties are eventually resolved)
|
||||
Collections.reverse(list);
|
||||
this.profiles.addAll(list);
|
||||
|
||||
// The default profile for these purposes is represented as null. We add it
|
||||
// last so that it is first out of the queue (active profiles will then
|
||||
|
@ -341,6 +341,18 @@ public class ConfigFileApplicationListenerTests {
|
||||
assertThat(property, equalTo("fromprofilepropertiesfile"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void profilesAddedToEnvironmentAndViaProperty() throws Exception {
|
||||
EnvironmentTestUtils.addEnvironment(this.environment,
|
||||
"spring.profiles.active:foo");
|
||||
this.environment.addActiveProfile("dev");
|
||||
this.initializer.onApplicationEvent(this.event);
|
||||
assertThat(this.environment.getActiveProfiles(),
|
||||
equalTo(new String[] { "foo", "dev" }));
|
||||
assertThat(this.environment.getProperty("my.property"),
|
||||
equalTo("fromdevpropertiesfile"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void yamlProfiles() throws Exception {
|
||||
this.initializer.setSearchNames("testprofiles");
|
||||
|
Loading…
Reference in New Issue
Block a user