java - 为什么 Spring @Value 注解的 String 变量得到的是 float 值?

标签 java spring

我有一个springbok项目,在application.yml文件中,有一个值

account-number: 060018242251

在 Bean 中,我们有

@Value('${account-number}')
String account

account 变量被赋值为“6.0018242251E10”而不是“060018242251”,有什么问题以及如何处理?

最佳答案

在解析 YAML 文件时,相应的解析器(在您的情况下可能是 SnakeYAML)已经确定了数据类型。由于它对于 Integer 来说太大了,它会将其视为 Double。

当注入(inject)值时,Spring 意识到您想要一个 String,但只存在一个 Double Value。因此,将调用 toString()-方法,您会以上述符号接收它。

如果您希望在解析 YAML 时该值是一个字符串,您应该使用引号。

顺便说一句@Prashant 八进制符号不会影响 YAML(或 SnakeYAML),前导 0 会被简单地忽略。

关于java - 为什么 Spring @Value 注解的 String 变量得到的是 float 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950824/

相关文章:

java - 在文件中写入对象的数组列表

java - 从 Java 中的数字中删除数字

Java在构造函数中初始化一个int数组

java - 使用 JavaFX 和 FXML 验证用户输入

java - 在eclipse中运行spring项目

java - Spring + GWT,如何禁用插入查询的用户授权请求?

java - spring-data-jpa 和 spring-boot-starter-data-jpa 的区别

java - 使用 PreAuthorize 时,ResponseBody 方法中的 Autowiring 服务为 Null

java - 在 @KafkaListener 上使用 @SendTo 有条件转发消息

java - Spring Cloud AWS - 发布 SNS 通知的 header 无效