Skip to content

Commit

Permalink
Merge branch '2.3.x'
Browse files Browse the repository at this point in the history
Closes gh-24033
  • Loading branch information
wilkinsona committed Nov 4, 2020
2 parents f3648d6 + 84cee76 commit 21eb467
Showing 1 changed file with 6 additions and 9 deletions.
Expand Up @@ -1499,9 +1499,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`.

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.
To bind to a `List`, the element number should be surrounded with underscores in the variable name.

Expand Down Expand Up @@ -1814,7 +1811,7 @@ The following table summarizes the features that are supported by `@Configuratio

| <<boot-features-external-config-relaxed-binding,Relaxed binding>>
| 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>>
| Yes
Expand All @@ -1825,15 +1822,15 @@ The following table summarizes the features that are supported by `@Configuratio
| Yes
|===

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.

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).
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).
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.
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-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>>.



Expand Down

0 comments on commit 21eb467

Please sign in to comment.