Merge branch '3.1.x' into 4.0.x
This commit is contained in:
@@ -284,6 +284,12 @@ public class PropertySourceBootstrapConfiguration implements ApplicationListener
|
||||
|
||||
private List<String> addActiveProfilesTo(List<String> profiles, PropertySource<?> propertySource,
|
||||
ConfigurableEnvironment environment) {
|
||||
// According to Spring Boot, "spring.profiles.active" should have priority,
|
||||
// only value from property source with the highest priority wins.
|
||||
// Once settled, ignore others
|
||||
if (!profiles.isEmpty()) {
|
||||
return profiles;
|
||||
}
|
||||
return addProfilesTo(profiles, propertySource, AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, environment);
|
||||
}
|
||||
|
||||
|
||||
@@ -656,6 +656,23 @@ public class BootstrapConfigurationTests {
|
||||
then(this.context.getEnvironment().getProperty("foo")).isEqualTo("bar");
|
||||
}
|
||||
|
||||
@Test
|
||||
void activeAndIncludeProfileFromBootstrapPropertySource_WhenMultiplePlacesHaveActiveProfileProperties_ShouldOnlyAcceptTheTopPriority() {
|
||||
String[] properties = new String[] { "spring.config.use-legacy-processing=true" };
|
||||
this.context = new SpringApplicationBuilder().web(WebApplicationType.NONE).properties(properties)
|
||||
.sources(BareConfiguration.class).run("--spring.profiles.active=prod,secure");
|
||||
then(this.context.getEnvironment().acceptsProfiles("prod", "secure")).isTrue();
|
||||
// active profile from property sources with lower priority should not be included
|
||||
then(this.context.getEnvironment().acceptsProfiles("local")).isFalse();
|
||||
then(this.context.getEnvironment().getActiveProfiles()).contains("prod", "secure");
|
||||
then(this.context.getEnvironment().getActiveProfiles()).doesNotContain("local");
|
||||
// check if active profile value could possibly exist in other property sources
|
||||
// with lower priority
|
||||
then(this.context.getEnvironment().getPropertySources().stream()
|
||||
.map(p -> p.getProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME)).anyMatch("local"::equals))
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableConfigurationProperties
|
||||
protected static class BareConfiguration {
|
||||
|
||||
@@ -8,3 +8,4 @@ debug:true
|
||||
logging.level.org.hibernate=ERROR
|
||||
logging.level.com.zaxxer.hikari=ERROR
|
||||
myplaceholder=${vcap.services.myvcap.myvar}
|
||||
spring.profiles.active=local
|
||||
|
||||
Reference in New Issue
Block a user