gpt4 book ai didi

date - application.yaml 和属性中的 Spring 启动日期处理

转载 作者:行者123 更新时间:2023-12-02 01:41:41 24 4
gpt4 key购买 nike

我正在创建一个简单的 Spring Boot 应用程序,它从 application.yaml 文件加载一个字符串(ISO-date)并尝试将其放入 @Value 注释字段中。
如果我使用 .yaml 文件,字符串显然会转换为日期/日历,然后“toStringed”转换为不同的格式。
如果我使用 .properties 文件,则字符串按原样传递。

应用

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class Application {

public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
SampleComponent c = ctx.getBean(SampleComponent.class);
c.bla();
}
}

应该配置的组件
@Component
public class SampleComponent {

@Value("${dateString}")
private String dateString;

public void bla() {
System.out.println(dateString);
}
}

应用程序.yaml
dateString: 2015-01-09

=> 输出:2015 年 1 月 9 日星期五 01:00:00 CET

应用程序属性
dateString=2015-01-09

=> 输出:2015-01-09

对我来说,使用属性解决方案很好,但我不明白为什么会发生这种情况?

(注意:当尝试将 yaml-date 分配给日期字段时,预期的“无法将 [java.lang.String] 类型的值转换为所需类型 [java.util.Date]:找不到匹配的编辑器或转换策略”异常被抛出)

最佳答案

这是因为 Spring Boot 使用 SnakeYAML 进行 YAML 解析,而 SnakeYAML 的默认行为是创建一个 java.util.Date来自它认为是时间戳的任何字符串。如果您有兴趣了解更多信息,请参阅 SnakeYAML 的 Resolver class有关更多详细信息,包括它用于标识时间戳的正则表达式。

关于date - application.yaml 和属性中的 Spring 启动日期处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28157778/

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