Spring Boot YAML配置错误读取属性

3ks5zfa0  于 2023-06-22  发布在  Spring
关注(0)|答案(2)|浏览(142)

我试图在Sping Boot 中设置一个配置来存储执行某些操作的特定时间,为此我有以下application.yml

hour: 14:00

和我的配置属性文件:

@Getter
@Setter
@Configuration
@ConfigurationProperties
public class CcScheduleConfig {

    private LocalTime hour;

}

但是运行应用程序会抛出此错误:

Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Integer] to type [java.time.LocalTime]

显然,它正在将14:00解析为Integer。这怎么可能

3pvhb19x

3pvhb19x1#

这是一个YAML的(许多)怪癖。它将值14:00视为整数,表示为14小时00分钟的分钟数,即840。类似地,12:57将是777
您可以通过将值括在引号中来避免此问题:

hour: "14:00"

引号告诉YAML基本上不需要处理值。然后它将按原样传递到Sping Boot 的转换服务中,该服务将能够将"14:00"转换为Localtime

6rvt4ljy

6rvt4ljy2#

你可以像整数一样注入它,然后使用LocalTime of()方法从java.time.LocalTime YAML转换:

localtime:
  hour: 14
  minute: 00

相关问题