gpt4 book ai didi

java - 从 YAML 属性文件实例化 POJO (LocalDateTime)(Java 和 Spring Boot)

转载 作者:行者123 更新时间:2023-12-01 20:19:58 25 4
gpt4 key购买 nike

我正在尝试使用 Spring Boot 初始化时从 YAML 属性文件加载自定义属性。我找到了无数关于如何做到这一点的教程,而且它们很有效。问题是我似乎找不到实例化 POJOS 的方法,例如 LocalDateTime。我的代码如下所示。

@Configuration
@ConfigurationProperties(prefix="default-film-showings")
public class FilmShowings {
private List<FilmShowing> filmShowings;

//Constructors, Getters, setters etc.

public static class FilmShowing {
private Integer id;
private Film film;
private Theatre theatre;
private LocalDateTime dateTime;

//Constructors, Getters, setters etc.
}
}

我的 YAML 文件当前如下

default-film-showings:
filmShowings:
- id: 1
dateTime: 2018-07-13 21:00:00

我的问题是初始化时出现以下错误

Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDateTime' for property 'filmShowings[0].dateTime';

我也尝试过这个变体

default-film-showings:
filmShowings:
- id: 1
dateTime:
date:
year: 2018
month: 7
day: 13
time:
hour: 21
minute: 0
second: 0
nano: 0

但我收到以下错误

Error creating bean with name 'filmShowings': Could not bind properties to FilmShowings

有什么帮助吗?我查看了以下线程 JSON Java 8 LocalDateTime format in Spring Boot但这并没有解决我的问题。

同样,有没有办法将 Film POJO 属性链接到另一个默认属性?

假设我的属性文件中有以下内容

default-films:
films:
- id: 1
filmName: Spider-Man

我也可以添加这样的东西吗?

default-film-showings:
filmShowings:
- id: 1
film: default-films.films[0]
dateTime: whatever I need to do here to make it work

它将 default-films.films[0] 作为字符串读取,因此与“YAML”对象不匹配。

有什么帮助吗?

最佳答案

  1. 假设 Spring 在 @ConfigurationProperties 类中支持 @DateTimeFormat 注释(我尚未验证),您已将格式声明为 DateTimeFormat.ISO.DATE_TIME2011-12-03T10:15:30+01:00[欧洲/巴黎]。您的属性文件的 2018-07-13 21:00:00 不是任何标准格式。您希望它如何发挥作用?

  2. 您的数据类型是 LocalDateTime,它没有时区的概念,因此与 ISO_DATE_TIME 格式相矛盾。不过,ISO_DATE_TIME 的时区是可选的,因此这可能不是问题。

显然,您正在向墙上扔意大利面条,并希望有东西能粘住。编写单元测试并尝试将字符串转换为您想要的任何日期时间对象。完成此操作后,如果遇到问题请回来。

关于java - 从 YAML 属性文件实例化 POJO (LocalDateTime)(Java 和 Spring Boot),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44988572/

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