Skip to content

Commit b46bb72

Browse files
committed
Clarify limitations of @propertysource
Closes gh-18900
1 parent 2fb75e5 commit b46bb72

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

spring-boot-project/spring-boot-docs/src/main/asciidoc/howto.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ It is therefore possible to get the location of the file from the environment.
105105
The preceding example adds the `custom-resource` property source at the end of the list so that a key defined in any of the usual other locations takes precedence.
106106
A custom implementation may define another order.
107107

108-
CAUTION: While using `@PropertySource` on your `@SpringBootApplication` may seem to be a convenient and easy way to load a custom resource in the `Environment`, we do not recommend it, because Spring Boot prepares the `Environment` before the `ApplicationContext` is refreshed.
109-
Any key defined with `@PropertySource` is loaded too late to have any effect on auto-configuration.
108+
CAUTION: While using `@PropertySource` on your `@SpringBootApplication` may seem to be a convenient way to load a custom resource in the `Environment`, we do not recommend it.
109+
Such property sources are not added to the `Environment` until the application context is being refreshed.
110+
This is too late to configure certain properties such as `logging.*` and `spring.main.*` which are read before refresh begins.
110111

111112

112113

spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,9 @@ Properties are considered in the following order:
351351
. <<boot-features-external-config-profile-specific-properties,Profile-specific application properties>> packaged inside your jar (`application-\{profile}.properties` and YAML variants).
352352
. Application properties outside of your packaged jar (`application.properties` and YAML variants).
353353
. Application properties packaged inside your jar (`application.properties` and YAML variants).
354-
. {spring-framework-api}/context/annotation/PropertySource.html[`@PropertySource`] annotations on your `@Configuration` classes (these are added late to the `Environment` and will not have any effect on anything that reads properties from the `Environment` before the `ApplicationContext` is refreshed, such as logging configuration and auto-configuration).
354+
. {spring-framework-api}/context/annotation/PropertySource.html[`@PropertySource`] annotations on your `@Configuration` classes.
355+
Please note that such property sources are not added to the `Environment` until the application context is being refreshed.
356+
This is too late to configure certain properties such as `logging.*` and `spring.main.*` which are read before refresh begins.
355357
. Default properties (specified by setting `SpringApplication.setDefaultProperties`).
356358

357359
To provide a concrete example, suppose you develop a `@Component` that uses a `name` property, as shown in the following example:

0 commit comments

Comments
 (0)