I'm migrating my application from Spring Boot 1.5 to 2.0 and one of the YAML properties no longer loads correctly. The following configuration snippet:
myapp
serviceUrls:
'https://example.org/test': 'https://test.example.org/Endpoint'
is mapped to this configuration class:
@ConfigurationProperties(prefix = "myapp", ignoreUnknownFields = false)
public final class MyAppProperties {
private Map<String, String> serviceUrls = new HashMap<>();
//[...]
}
https://example.org/test
-> https://test.example.org/Endpoint
;httpsexample.orgtest
-> https://test.example.org/Endpoint
.I couldn't find any mention of this in the migration guide. Has YAML parsing changed in Spring Boot 2? Is there a better way to write YAML maps with URLs as keys?
Spring Framework provides two convenient classes that can be used to load YAML documents. The YamlPropertiesFactoryBean will load YAML as Properties and the YamlMapFactoryBean will load YAML as a Map.
You may specify both relative and absolute paths to other YAML files using the -l switch, separating multiple files using commas; any settings specified in the -y switch.
You can use properties files, YAML files, environment variables and command-line arguments to externalize configuration.
I should have checked GitHub issues... someone reported a similar problem. The solution is to use the "bracket syntax", which is unfortunately barely documented, wrapping the keys within brackets:
myapp
serviceUrls:
'[https://example.org/test]': 'https://test.example.org/Endpoint'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With