主页 > 开源代码  > 

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

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

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

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

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

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

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

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

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

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

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

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

标签:

spring配置文件默认类型与进制转换的坑由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“spring配置文件默认类型与进制转换的坑