问题
今天在yml配置文件配置了一个属性,但是在通过@Value获取值时,发现与配置的值不一致
配置类似如下:
api:
number: 001120
但是如下代码中获取到的却是592
@Value("${api.number}")
private String apiNumber;
原因
配置文件读取配置数据时 如果是0开头的数字, 会认为是8进制数据 读取后自动转为十进制 所以获取的数据就与配置的数据不一致。
下面是数字相关的转换机制:
1、以0b开头的数字,会被当做二进制数处理
2、以0x开头的数字,会被当做十六进制数处理
3、以0开头的数字,会被当做八进制数处理
解决方法
在配置值两边加引号,这时会当做字符串处理,如下
api:
number: “001120”