springboot配置文件0开头的数字自动被转换成为其他值/与原值不匹配: 000000转为0

在springboot配置文件需要使用字符串类型的数值时候,有时候直接写一个0开头的数值,例如001。配置生效之后,打印配置参数时候发现不对,输出的是数值1。

而yml中配置的:000000,输出的是:0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class ConstructYamlInt extends AbstractConstruct {
        public ConstructYamlInt() {
        }
 
        public Object construct(Node node) {
            String value = SafeConstructor.this.constructScalar((ScalarNode)node).toString().replaceAll("_", "");
            int sign = 1;
            char first = value.charAt(0);
            if (first == '-') {
                sign = -1;
                value = value.substring(1);
            } else if (first == '+') {
                value = value.substring(1);
            }
 
            int basex = true;
            if ("0".equals(value)) {
                return 0;
            } else {
                byte base;
                if (value.startsWith("0b")) {
                    value = value.substring(2);
                    base = 2;
                } else if (value.startsWith("0x")) {
                    value = value.substring(2);
                    base = 16;
                } else {
                    if (!value.startsWith("0")) {
                        if (value.indexOf(58) == -1) {
                            return SafeConstructor.this.createNumber(sign, value, 10);
                        }
 
                        String[] digits = value.split(":");
                        int bes = 1;
                        int val = 0;
                        int i = 0;
 
                        for(int j = digits.length; i < j; ++i) {
                            val = (int)((long)val + Long.parseLong(digits[j - i - 1]) * (long)bes);
                            bes *= 60;
                        }
 
                        return SafeConstructor.this.createNumber(sign, String.valueOf(val), 10);
                    }
 
                    value = value.substring(1);
                    base = 8;
                }
 
                return SafeConstructor.this.createNumber(sign, value, base);
            }
        }
    }

  

解决方法:

1
2
3
config: "001"
或者
config: "000000"

  

https://www.cnblogs.com/i-tao/p/16865913.html

posted @   穆晟铭  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2020-08-14 git合并分支后,删除本地远程分支
2020-08-14 git 命令合并分支
2018-08-14 spring-cloud: eureka之:ribbon负载均衡配置(一)
2018-08-14 JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析
2017-08-14 java: 列出本机java环境
2016-08-14 HTTP 头部解释
点击右上角即可分享
微信分享提示