SpringBoot配置文件使用yml格式时报错,使用properties格式时正常
背景:配置文件使用yml格式时报错,使用properties格式时正常
在 Spring Boot 应用程序中,.properties
和 .yml
都是常用的配置文件格式,它们都可以被 Spring Boot 自动加载并解析。但是在属性解析方面,它们有一些细微的差别。
对于 .properties
文件,Spring Boot 使用 PropertyPlaceholderHelper
类来解析属性值,它会在应用程序启动时扫描配置文件中的 ${...}
占位符,并尝试从环境属性或者配置文件中找到对应的值来替换。
而对于 .yml
文件,Spring Boot 使用的是 YAML 标准库来解析配置。YAML 的语法比较灵活,对于字符串的表示有多种方式,比如 username: root
和 username: "root"
都表示相同的字符串 "root"。但是对于像 ${...}
这样的占位符,YAML 本身并不支持,因此 Spring Boot 在 .yml
文件中无法直接使用 ${...}
占位符来引用属性值。
所以,当你使用 .properties
文件时,Spring Boot 能够很好地识别 ${...}
占位符并进行属性解析。而当你使用 .yml
文件时,如果想要实现属性的引用和解析,可以使用 ${...}
占位符的替代方案,比如使用 @Value
注解来注入属性值,或者使用 @ConfigurationProperties
注解来绑定属性到对象。