【发布时间】:2017-12-12 19:15:25
【问题描述】:
我正在尝试在使用 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”对象。
有什么帮助吗?
【问题讨论】:
-
如果您尝试使用 ISO 格式的字符串会发生什么。示例
2007-03-01T13:00:00? -
嗨。谢谢您的回答。我目前有类似
@DateTimeFormat(pattern = "yyyy-MM-ss HH:mm:dd", iso= DateTimeFormat.ISO.DATE_TIME) private LocalDateTime dateTime;的东西,我在 YAML 中输入了dateTime: "2007-03-01T13:00:00"。得到以下错误Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDateTime'
标签: java spring properties yaml pojo