背景:配置檔案使用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
註解來繫結屬性到物件。