Skip to content

Commit

Permalink
Allow indirect standard profile-specific imports
Browse files Browse the repository at this point in the history
Effectively revert commit d1b256a so that profile-specific imports
can again be used with or without a parent import.

Fixes gh-26858
  • Loading branch information
philwebb committed Jun 17, 2021
1 parent 5147fca commit b5c92d5
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,10 @@ They must be defined as an environment property (typically an OS environment var

If `spring.config.location` contains directories (as opposed to files), they should end in `/`.
At runtime they will be appended with the names generated from `spring.config.name` before being loaded.
Files specified in `spring.config.location` are used as-is.
Files specified in `spring.config.location` are imported directly.

NOTE: Both directory and file location values are also expanded to check for <<boot-features-external-config-files-profile-specific,profile-specific files>>.
For example, if you have a `spring.config.location` of `classpath:myconfig.properties`, you will also find appropriate `classpath:myconfig-<profile>.properties` files are loaded.

In most situations, each configprop:spring.config.location[] item you add will reference a single file or directory.
Locations are processed in the order that they are defined and later ones can override the values of earlier ones.
Expand Down Expand Up @@ -782,6 +785,7 @@ For example, you might have the following in your classpath `application.propert
This will trigger the import of a `dev.properties` file in current directory (if such a file exists).
Values from the imported `dev.properties` will take precedence over the file that triggered the import.
In the above example, the `dev.properties` could redefine `spring.application.name` to a different value.

An import will only be imported once no matter how many times it is declared.
The order an import is defined inside a single document within the properties/yaml file doesn't matter.
For instance, the two examples below produce the same result:
Expand Down Expand Up @@ -809,6 +813,9 @@ In both of the above examples, the values from the `my.properties` file will tak
Several locations can be specified under a single `spring.config.import` key.
Locations will be processed in the order that they are defined, with later imports taking precedence.

NOTE: When appropriate, <<boot-features-external-config-files-profile-specific, Profile-specific variants>> are also considered for import.
The example above would import both `my.properties` as well as any `my-<profile>.properties` variants.

[TIP]
====
Spring Boot includes pluggable API that allows various different location addresses to be supported.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,6 @@ private Set<StandardConfigDataReference> getReferences(ConfigDataLocationResolve
@Override
public List<StandardConfigDataResource> resolveProfileSpecific(ConfigDataLocationResolverContext context,
ConfigDataLocation location, Profiles profiles) {
if (context.getParent() != null) {
return null;
}
return resolve(getProfileSpecificReferences(context, location.split(), profiles));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -611,13 +611,13 @@ void runWhenImportFromEarlierDocumentUsesPlaceholder() {
assertThat(context.getEnvironment().getProperty("my.value")).isEqualTo("iwasimported");
}

@Test
@Test // gh-26858
void runWhenImportWithProfileVariantOrdersPropertySourcesCorrectly() {
this.application.setAdditionalProfiles("dev");
ConfigurableApplicationContext context = this.application
.run("--spring.config.location=classpath:application-import-with-profile-variant.properties");
assertThat(context.getEnvironment().getProperty("my.value"))
.isEqualTo("application-import-with-profile-variant-dev");
.isEqualTo("application-import-with-profile-variant-imported-dev");
}

@Test
Expand Down

0 comments on commit b5c92d5

Please sign in to comment.