Skip to content

Commit

Permalink
Clarify documentation of relaxed binding
Browse files Browse the repository at this point in the history
Update the "Relaxed binding" with a small table of common relaxed
property names and when they might be used.

Fixes spring-projectsgh-2234
  • Loading branch information
philwebb committed Jan 8, 2015
1 parent 6fbccbe commit 88f8248
Showing 1 changed file with 30 additions and 5 deletions.
35 changes: 30 additions & 5 deletions spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -600,13 +600,38 @@ in a similar manner as the `ConnectionSettings` example above.
Spring Boot uses some relaxed rules for binding `Environment` properties to
`@ConfigurationProperties` beans, so there doesn't need to be an exact match between
the `Environment` property name and the bean property name. Common examples where this
is useful include underscore separated (e.g. `context_path` binds to `contextPath`), and
is useful include dashed separated (e.g. `context-path` binds to `contextPath`), and
capitalized (e.g. `PORT` binds to `port`) environment properties.

NOTE: Environment variables are usually underscore-separated and upper case. You can
use that format and Spring Boot will bind them to your bean property names accordingly.
For instance `MY_PROPERTY` will match just the same as `myProperty`, `my_property` or
`my-property`.
For example, given the following `@ConfigurationProperties` class:

[source,java,indent=0]
----
@Component
@ConfigurationProperties(prefix="person")
public class ConnectionSettings {
private String firstName;
}
----

The following properties names can all be used:

.relaxed binding
[cols="1,4"]
|===
| Property | Note

|`person.firstName`
|Standard camel case syntax.

|`person.first-name`
|Dashed notation, recommended for use in `.properties` and `.yml` files.

|`PERSON_FIRST_NAME`
|Upper case format. Recommended when using a system environment variables.
|===

Spring will attempt to coerce the external application properties to the right type when
it binds to the `@ConfigurationProperties` beans. If you need custom type conversion you
Expand Down

0 comments on commit 88f8248

Please sign in to comment.