我从Spring Boot应用程序中的application.yaml文件中得到了完全错误的字符串值。yaml config 中的值为 044525266,var 中的值为 9611958

I'm getting totally wrong String value from the application.yaml file in the Spring Boot app.The value in yaml config is 044525266 and in var 9611958

提问人:Eljah 提问时间:10/5/2023 更新时间:10/5/2023 访问量:61

问:

这可能是因为领先零?

acquiring:
  bic: 044525266

在 yaml 中通过

   @Autowired
    public AcquiringService(
...
                            @Value("${acquiring.bic}") String bic,
...
)

Spring Boot 版本为:2.1.8.RELEASE

它使用库org.yaml:snakeyaml:1.23

enter image description here

Java Spring spring-boot 蛇形

答:

-1赞 Eljah 10/5/2023 #1
acquiring:
  bic: "044525266"

引号成功了。而且我不知道为什么,为什么不能作为一个?StringString

评论

1赞 Jorn 10/5/2023
String 被读取为 String 就好了。但是,如果在 YAML 中放置八进制文字,则该文字将首先被读取为数字,然后转换为字符串(十进制)。
0赞 Eljah 10/5/2023
正常人怎么会知道这一点,而不是面对相关的失败?
0赞 Eljah 10/5/2023
@Jorn我希望你把你的评论变成官方答案,这真的是有道理的。
4赞 peterulb 10/5/2023 #2

正如你所指出的,引号可以解决这个问题。原因可以在 YAML 1.1 规范中找到。

例 2.19.整数

规范:12345
十进制:+12,345
六进制:3:25:45
八进制:014 <<<<<<<
十六进制:0xC

在 YAML 1.2 中,八进制数代替 .0o0

所以八进制变成十进制。0445252669611958

为了正确使用,应该使用引号

acquiring:
  bic: "044525266"