Fail hard if spring.profiles.include is used with new config processing
Closes gh-22693
This commit is contained in:
parent
e719a246df
commit
b9abcf1615
|
@ -1742,21 +1742,9 @@ The configprop:spring.profiles.active[] property follows the same ordering rules
|
|||
This means that you can specify active profiles in `application.properties` and then *replace* them by using the command line switch.
|
||||
|
||||
Sometimes, it is useful to have properties that *add* to the active profiles rather than replace them.
|
||||
The configprop:spring.profiles.include[] property can be used to unconditionally add active profiles.
|
||||
The `SpringApplication` entry point also has a Java API for setting additional profiles (that is, on top of those activated by the configprop:spring.profiles.active[] property).
|
||||
The `SpringApplication` entry point has a Java API for setting additional profiles (that is, on top of those activated by the configprop:spring.profiles.active[] property).
|
||||
See the `setAdditionalProfiles()` method in {spring-boot-module-api}/SpringApplication.html[SpringApplication].
|
||||
|
||||
For example, when an application with the following properties is run by using the switch, `--spring.profiles.active=custom`, the `other` and `extra` profiles are still activated:
|
||||
|
||||
[source,yaml,indent=0]
|
||||
----
|
||||
---
|
||||
my.property: fromyamlfile
|
||||
spring.profiles.include:
|
||||
- other
|
||||
- extra
|
||||
----
|
||||
|
||||
Profile groups, which are described in the <<boot-features-profiles-groups,next section>> can also be used to add active profiles if a given profile is active.
|
||||
|
||||
|
||||
[[boot-features-profiles-groups]]
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.springframework.boot.context.properties.source.ConfigurationPropertyS
|
|||
*/
|
||||
public class InvalidConfigDataPropertyException extends ConfigDataException {
|
||||
|
||||
private static final Map<ConfigurationPropertyName, ConfigurationPropertyName> ERROR = Collections.emptyMap();
|
||||
private static final Map<ConfigurationPropertyName, ConfigurationPropertyName> ERROR;
|
||||
|
||||
private static final Map<ConfigurationPropertyName, ConfigurationPropertyName> WARNING;
|
||||
static {
|
||||
|
@ -43,6 +43,10 @@ public class InvalidConfigDataPropertyException extends ConfigDataException {
|
|||
warning.put(ConfigurationPropertyName.of("spring.profiles"),
|
||||
ConfigurationPropertyName.of("spring.config.activate.on-profile"));
|
||||
WARNING = Collections.unmodifiableMap(warning);
|
||||
Map<ConfigurationPropertyName, ConfigurationPropertyName> error = new LinkedHashMap<>();
|
||||
error.put(ConfigurationPropertyName.of("spring.profiles.include"),
|
||||
ConfigurationPropertyName.of("spring.profiles.group"));
|
||||
ERROR = Collections.unmodifiableMap(error);
|
||||
}
|
||||
|
||||
private final ConfigurationProperty property;
|
||||
|
|
|
@ -123,6 +123,17 @@ class InvalidConfigDataPropertyExceptionTests {
|
|||
+ "'spring.config.activate.on-profile' [origin: \"spring.profiles\" from property source \"mockProperties\"]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void throwOrWarnWhenHasErrorPropertyThrowsException() {
|
||||
MockPropertySource propertySource = new MockPropertySource();
|
||||
propertySource.setProperty("spring.profiles.include", "a");
|
||||
ConfigDataEnvironmentContributor contributor = ConfigDataEnvironmentContributor.ofExisting(propertySource);
|
||||
assertThatExceptionOfType(InvalidConfigDataPropertyException.class)
|
||||
.isThrownBy(() -> InvalidConfigDataPropertyException.throwOrWarn(this.logger, contributor))
|
||||
.withMessage("Property 'spring.profiles.include' is invalid and should be replaced with "
|
||||
+ "'spring.profiles.group' [origin: \"spring.profiles.include\" from property source \"mockProperties\"]");
|
||||
}
|
||||
|
||||
private static class TestConfigDataLocation extends ConfigDataLocation {
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue