Skip to content

Commit

Permalink
Merge branch '2.4.x'
Browse files Browse the repository at this point in the history
Closes gh-25346
  • Loading branch information
mbhave committed Feb 17, 2021
2 parents 91e16e1 + 34150d0 commit d69565c
Showing 1 changed file with 3 additions and 30 deletions.
Expand Up @@ -914,8 +914,6 @@ The `SpringApplication` class automatically supports YAML as an alternative to p

NOTE: If you use "`Starters`", SnakeYAML is automatically provided by `spring-boot-starter`.



==== Mapping YAML to Properties
YAML documents need to be converted from their hierarchical format to a flat structure that can be used with the Spring `Environment`.
For example, consider the following YAML document:
Expand Down Expand Up @@ -964,6 +962,9 @@ The preceding example would be transformed into these properties:
TIP: Properties that use the `[index]` notation can be bound to Java `List` or `Set` objects using Spring Boot's `Binder` class.
For more details see the "`<<boot-features-external-config-typesafe-configuration-properties>>`" section below.

WARNING: YAML files cannot be loaded by using the `@PropertySource` or `@TestPropertySource` annotations.
So, in the case that you need to load values that way, you need to use a properties file.



[[boot-features-external-config-loading-yaml]]
Expand All @@ -975,34 +976,6 @@ The `YamlPropertiesFactoryBean` loads YAML as `Properties` and the `YamlMapFacto
You can also use the `YamlPropertySourceLoader` class if you want to load YAML as a Spring `PropertySource`.



[[boot-features-external-config-yaml-shortcomings]]
==== YAML Shortcomings
YAML files cannot be loaded by using the `@PropertySource` annotation.
So, in the case that you need to load values that way, you need to use a properties file.

Using the multi-document YAML syntax in profile-specific YAML files can lead to unexpected behavior.
For example, consider the following config in a file:

.application-dev.yml
[source,yaml,indent=0]
----
server.port: 8000
---
spring.config.activate.on-profile: "!test"
mypassword: "secret"
----

If you run the application with the argument `--spring.profiles.active=dev` you might expect `mypassword` to be set to "`secret`", but this is not the case.

The nested document will be filtered because the main file is named `application-dev.yml`.
It is already considered to be profile-specific, and nested documents will be ignored.

TIP: We recommend that you don't mix profile-specific YAML files and multiple YAML documents.
Stick to using only one of them.



[[boot-features-external-config-random-values]]
=== Configuring Random Values
The `RandomValuePropertySource` is useful for injecting random values (for example, into secrets or test cases).
Expand Down

0 comments on commit d69565c

Please sign in to comment.