gpt4 book ai didi

java - application.yml 中的@Value 返回错误值

转载 作者:行者123 更新时间:2023-11-30 06:49:22 25 4
gpt4 key购买 nike

在我的 application.yml 文件中声明:

service:
a:
b: 011600
c: 011200

通过@Value注解从.yml中选择值:

@Value("${service.a.c}")
private String VALUE;

我得到的不是预期的“011200”,而是“4992”,这在 .yml 中没有提到。

最佳答案

您没有指定您的文档的 YAML 版本,看起来您的解析器默认为 1.1 版(或 1.1 版兼容性)。这导致以 0 开头后跟数字的值被解释为八进制,011200(八进制)的值是 4736(十进制),011600< 的值(八进制)是 4992

在 YAML 1.2 中,八进制整数值应以 Oo 开头,因此 011200 将是整数 11200

尝试使用:

%YAML 1.2
---
service:
a:
b: 011600
c: 011200

如果这不能为您提供所需的值(value),您应该考虑使用兼容的 YAML 解析器(YAML 1.2 规范是从 2009 年开始的,因此有足够的时间来解决问题)。

您当然可以引用您的整数标量,但它们将作为字符串而不是整数加载。在这种情况下,您不需要指定版本标签,版本 1.2 和 1.1 的解释方式相同:

service:
a:
b: '011600'
c: '011200'

如果在获取您在文件中指定的十进制值后,您仍然为 @Value("${service.a.c}") 获取错误值,那么您应该考虑使用不同的访问方式方法(如果键中有一个点(例如 serv.ice:)或者不同的解析器,则该方法有效。

关于java - application.yml 中的@Value 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42828311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com