记录一个容易混淆的 Spring Boot 项目配置文件问题
去年,我遇到了这样一个问题:
在这个例子中,由于密码 password
以 0
开头,当它被 Spring Boot 的 bean
读取时,前导的 0
被自动去掉了。这导致程序无法正确读取密码。为了解决这个问题,当时的方案是给密码加上一对引号,将其强制识别为字符串:
password="012345"
心中的疑虑
然而,这个问题让我心里一直有些疑虑:是不是所有的配置项都应该这样加上引号?为了避免潜在的错误,我后来在各种配置项上都这么做了。
但意外终究还是发生了。
新问题
今天,在写 properties
配置文件时,我再次尝试使用相同的引号解决方案,但却报错了。
探索与总结
经过一番探索,我发现并不是所有配置项都适合加引号。以下是对不同情况的总结:
配置类型 | 是否需要引号 | 说明 |
---|---|---|
字符串 | 是 | 当内容以数字或特殊字符开头时,建议加引号 |
数字 | 否 | 纯数字不需要引号,否则会被解析为字符串 |
布尔值 | 否 | true 或 false 不需要引号,否则会报错 |
YAML 格式 | 是/否 | YAML 中大部分情况下引号不是必须,但特殊字符需小心 |
null 值 | 否 | null 不应加引号,否则会被识别为字符串 "null" |