You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot YAML配置LocalTime属性解析异常求助

问题原因及解决方案

原因分析

YAML解析器会将不带引号的14:00解析为整数类型(对应总分钟数:14*60=840),而你的配置类中用LocalTime接收该值,Spring框架找不到从Integer到LocalTime的内置转换器,因此抛出类型转换异常。

解决方案

方案1:给配置值加引号(最简方案)

修改application.yml,将时间值用双引号包裹,强制YAML将其解析为字符串,Spring自带的字符串转LocalTime转换器就能正常工作:

hour: "14:00"

方案2:规范配置属性前缀(可选但推荐)

给@ConfigurationProperties添加前缀,避免配置键冲突,同时配套调整YAML结构:
配置类代码:

@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = "schedule")
public class CcScheduleConfig {
    private LocalTime hour;
}

application.yml配置:

schedule:
  hour: "14:00"

方案3:自定义类型转换器(不推荐,仅特殊场景使用)

如果不想加引号,可以自定义转换器,将YAML解析出的整数(总分钟数)转换为LocalTime:

@Component
public class IntegerToLocalTimeConverter implements Converter<Integer, LocalTime> {
    @Override
    public LocalTime convert(Integer source) {
        return LocalTime.of(source / 60, source % 60);
    }
}

这种方式依赖YAML的解析逻辑,稳定性不如加引号的方案。

内容的提问来源于stack exchange,提问作者thmasker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:48:08