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

SpringBoot 2.5.4 actuator/startup响应时间格式与官方不一致问题

问题原因

Spring Boot 2.5.4版本的/actuator/startup端点,默认序列化逻辑和官方文档描述不一致。这是因为该版本里BufferingApplicationStartup收集的时间数据,在序列化时直接输出了Java Instant、Duration类型的内部结构(拆成seconds和nanos字段),而没有转换成标准的ISO-8601格式(比如yyyy-MM-dd'T'HH:mm:ss.SSSXXX时间格式、PTxHyMzS时长格式)。

官方文档的格式描述其实是基于更高版本(2.6+)的行为,后续Spring Boot版本优化了这个端点的序列化逻辑,统一输出标准ISO格式。

解决办法

有两种方式可以拿到符合官方文档格式的响应:

方式一:自定义Jackson序列化配置

通过配置Jackson模块,让Instant和Duration类型序列化为ISO格式:

  1. 创建一个配置类,注册对应的序列化器:
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.DurationSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

@Configuration
public class JacksonConfig {
    @Bean
    public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        SimpleModule module = new SimpleModule();
        module.addSerializer(Instant.class, InstantSerializer.INSTANCE);
        module.addSerializer(Duration.class, DurationSerializer.INSTANCE);
        builder.modules(module);
        return builder;
    }
}
  1. 重启应用后再请求/actuator/startup,返回的时间和时长就会变成标准ISO格式。

方式二:升级Spring Boot版本

直接把Spring Boot版本升到2.6.x及以上,这个版本已经修复了序列化差异的问题,默认就会输出符合官方文档的ISO格式,不需要额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:25:41