我试图在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
。这怎么可能
2条答案
按热度按时间3pvhb19x1#
这是一个YAML的(许多)怪癖。它将值
14:00
视为整数,表示为14小时00分钟的分钟数,即840
。类似地,12:57
将是777
。您可以通过将值括在引号中来避免此问题:
引号告诉YAML基本上不需要处理值。然后它将按原样传递到Sping Boot 的转换服务中,该服务将能够将
"14:00"
转换为Localtime
。6rvt4ljy2#
你可以像整数一样注入它,然后使用
LocalTime of()
方法从java.time.LocalTime
YAML转换: