Make it clearer that default config locations are always used

Closes gh-4062
This commit is contained in:
Andy Wilkinson 2017-07-19 14:39:27 +01:00
parent 85862e66e9
commit 29f1bd9953

View File

@ -551,14 +551,31 @@ being loaded, including profile-specific file names). Files specified in
`spring.config.location` are used as-is, with no support for profile-specific variants,
and will be overridden by any profile-specific properties.
The default search path `classpath:,classpath:/config,file:,file:config/`
is always used, irrespective of the value of `spring.config.location`. This search path
is ordered from lowest to highest precedence (`file:config/` wins). If you do specify
your own locations, they take precedence over all of the default locations and use the
same lowest to highest precedence ordering. In that way you can set up default values for
your application in `application.properties` (or whatever other basename you choose with
`spring.config.name`) and override it at runtime with a different file, keeping the
defaults.
Config locations are searched in reverse order. By default, the configured locations are
`classpath:/,classpath:/config/,file:./,file:./config/`. The resulting search order is:
1. `file:./config/`
2. `file:./`
3. `classpath:/config/`
4. `classpath:/`
When custom config locations are configured, they are used in addition to the default
locations. Custom locations are searched before the default locations. For example,
if custom locations `classpath:/custom-config/,file:./custom-config/` are configured, the search order becomes:
1. `file:./custom-config/`
2. `classpath:custom-config/`
3. `file:./config/`
4. `file:./`
5. `classpath:/config/`
6. `classpath:/`
This search ordering allows you to specify default values in one configuration file
and then selectively override those values in another. You can provide default values
for you application in `application.properties` (or whatever other basename you choose
with `spring.config.name`) in one of the default locations. These default values can
then be overriden at runtime with a different file located in one of the custom
locations.
NOTE: If you use environment variables rather than system properties, most operating
systems disallow period-separated key names, but you can use underscores instead (e.g.