SpringBoot配置檔案使用yml格式時報錯,使用properties格式時正常

燕子去了發表於2024-04-22

背景:配置檔案使用yml格式時報錯,使用properties格式時正常

在 Spring Boot 應用程式中,.properties.yml 都是常用的配置檔案格式,它們都可以被 Spring Boot 自動載入並解析。但是在屬性解析方面,它們有一些細微的差別。

對於 .properties 檔案,Spring Boot 使用 PropertyPlaceholderHelper 類來解析屬性值,它會在應用程式啟動時掃描配置檔案中的 ${...} 佔位符,並嘗試從環境屬性或者配置檔案中找到對應的值來替換。

而對於 .yml 檔案,Spring Boot 使用的是 YAML 標準庫來解析配置。YAML 的語法比較靈活,對於字串的表示有多種方式,比如 username: rootusername: "root" 都表示相同的字串 "root"。但是對於像 ${...} 這樣的佔位符,YAML 本身並不支援,因此 Spring Boot 在 .yml 檔案中無法直接使用 ${...} 佔位符來引用屬性值。

所以,當你使用 .properties 檔案時,Spring Boot 能夠很好地識別 ${...} 佔位符並進行屬性解析。而當你使用 .yml 檔案時,如果想要實現屬性的引用和解析,可以使用 ${...} 佔位符的替代方案,比如使用 @Value 註解來注入屬性值,或者使用 @ConfigurationProperties 註解來繫結屬性到物件。

相關文章