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 注解来绑定属性到对象。

2024年4月22日00:32:46
浙公网安备 33010602011771号