Commit d5980be6 authored by Andy Wilkinson's avatar Andy Wilkinson

Clarify documentation for relaxed binding of environment variables

Closes gh-22974
parent a8b8f431
...@@ -1185,9 +1185,6 @@ To convert a property name in the canonical-form to an environment variable name ...@@ -1185,9 +1185,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.
...@@ -1461,7 +1458,7 @@ The following table summarizes the features that are supported by `@Configuratio ...@@ -1461,7 +1458,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
...@@ -1472,15 +1469,15 @@ The following table summarizes the features that are supported by `@Configuratio ...@@ -1472,15 +1469,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>>.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment