Merge branch '2.2.x' into 2.3.x

Closes gh-24032
pull/24095/head
Andy Wilkinson 4 years ago
commit 84cee76700

@ -1300,9 +1300,6 @@ To convert a property name in the canonical-form to an environment variable name
For example, the configuration property `spring.main.log-startup-info` would be an environment variable named `SPRING_MAIN_LOGSTARTUPINFO`. For example, the configuration property `spring.main.log-startup-info` would be an environment variable named `SPRING_MAIN_LOGSTARTUPINFO`.
NOTE: Underscores cannot be used to replace the dashes in property names.
If you attempt to use `SPRING_MAIN_LOG_STARTUP_INFO` with the example above, no value will be bound.
Environment variables can also be used when binding to object lists. Environment variables can also be used when binding to object lists.
To bind to a `List`, the element number should be surrounded with underscores in the variable name. To bind to a `List`, the element number should be surrounded with underscores in the variable name.
@ -1596,7 +1593,7 @@ The following table summarizes the features that are supported by `@Configuratio
| <<boot-features-external-config-relaxed-binding,Relaxed binding>> | <<boot-features-external-config-relaxed-binding,Relaxed binding>>
| Yes | Yes
| Limited (see note below) | Limited (see <<boot-features-external-config-vs-value-note,note below>>)
| <<appendix-configuration-metadata.adoc#configuration-metadata,Meta-data support>> | <<appendix-configuration-metadata.adoc#configuration-metadata,Meta-data support>>
| Yes | Yes
@ -1607,15 +1604,15 @@ The following table summarizes the features that are supported by `@Configuratio
| Yes | Yes
|=== |===
If you define a set of configuration keys for your own components, we recommend you group them in a POJO annotated with `@ConfigurationProperties`. NOTE: [[boot-features-external-config-vs-value-note]] If you do want to use `@Value`, we recommend that you refer to property names using their canonical form (kebab-case using only lowercase letters).
Doing so will provide you with structured, type-safe object that you can inject into your own beans.
If you do want to use `@Value`, we recommend that you refer to property names using their canonical form (kebab-case using only lowercase letters).
This will allow Spring Boot to use the same logic as it does when relaxed binding `@ConfigurationProperties`. This will allow Spring Boot to use the same logic as it does when relaxed binding `@ConfigurationProperties`.
For example, `@Value("{demo.item-price}")` will pick up `demo.item-price` and `demo.itemPrice` forms from the `application.properties` file, as well as `DEMO_ITEMPRICE` from the system environment. For example, `@Value("{demo.item-price}")` will pick up `demo.item-price` and `demo.itemPrice` forms from the `application.properties` file, as well as `DEMO_ITEMPRICE` from the system environment.
If you used `@Value("{demo.itemPrice}")` instead, `demo.item-price` and `DEMO_ITEMPRICE` would not be considered. If you used `@Value("{demo.itemPrice}")` instead, `demo.item-price` and `DEMO_ITEMPRICE` would not be considered.
Finally, while you can write a `SpEL` expression in `@Value`, such expressions are not processed from <<boot-features-external-config-application-property-files,application property files>>. If you define a set of configuration keys for your own components, we recommend you group them in a POJO annotated with `@ConfigurationProperties`.
Doing so will provide you with structured, type-safe object that you can inject into your own beans.
While you can write a `SpEL` expression in `@Value`, such expressions are not processed from <<boot-features-external-config-application-property-files,application property files>>.

Loading…
Cancel
Save