Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove YAML shortcomings section as it no longer applies #24620

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -971,7 +971,8 @@ The `SpringApplication` class automatically supports YAML as an alternative to p

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


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.

==== 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`.
Expand Down Expand Up @@ -1032,34 +1033,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