spring配置文件默认类型与进制转换的坑

在使用spring配置时,常用的做法是在.properties文件中配置key-value,然后在java代码中使用@Value注解引用。

但我们注意到,propertites文件中的value是没有类型的,类似12398这种配置可以同时被解读为字符串和整数,当我们声明了一个整数格式的配置项并在java中使用@Value将其作为String引入时会发生什么呢?

我们原有的认知中加载顺序是:

  • 获取字符串
  • 判断目标类型并直接引用为字符串

但我们在properties文件中定义了一个如此格式的整数:0120600433

在java中作为String引用后却变成了一个奇怪的数字:21168411

分析2个数字过后我们可以得知:将0120600433作为8进制数转换为了10进制的21168411。

所以我们可以推测在spring内部处理顺序是这样的:

  1. 获取配置项
  2. 优先以数字格式进行处理,在此处进行可能的格式转换(包含进制转换)
  3. 将转换后的结果注入到java的变量中

所以,对于以0开头的数字类型,如果要以字符串的形式使用,需要在properties用双引号处理,避免进制转换的发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值