You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用从application.yaml读取带前导零字符串值异常

问题原因与解决方案

问题根源

YAML语法中,带前导零的数字会被默认解析为八进制数。你配置里的044525266是八进制值,转成十进制正好是9611958——哪怕你注入的是String类型,snakeyaml也会先把它解析成数字再转成字符串,所以得到了错误结果。

解决办法

  • 方法1:修改YAML配置,用引号包裹值
    直接把bic的值用双引号或单引号括起来,强制让YAML解析器把它当作字符串处理:

    acquiring:
      bic: "044525266"
    
  • 方法2:在@Value中用SpEL强制转为字符串
    如果无法修改配置文件,可以通过Spring表达式语言(SpEL)在注入时强制转换为字符串:

    @Autowired
    public AcquiringService(
        // 其他参数...
        @Value("#{'${acquiring.bic}'}") String bic,
        // 其他参数...
    )
    
  • 方法3:升级snakeyaml版本
    snakeyaml从1.24版本开始,默认不再将带前导零的数字解析为八进制(仅当数字以0o开头时才会当作八进制)。你可以升级org.yaml:snakeyaml到1.24及以上版本,注意要配合Spring Boot 2.1.8的依赖兼容(可在pom.xml或build.gradle中手动指定版本)。

内容的提问来源于stack exchange,提问作者Eljah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:42:05