Spring Boot 4集成Jackson 3时OffsetDateTime时区转换全局配置失效问题
Spring Boot 4 Web Client中OffsetDateTime时区转换全局配置问题
Spring Boot 4对日期处理相关逻辑做了大幅重构,在Web Client场景下,使用OffsetDateTime类型时默认会将其转换为UTC时区。我希望禁用这一默认行为,但尝试的全局配置并未生效,仅在字段上添加@JsonFormat(without = JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, with = {})注解才能保留原始时区偏移。
复现场景
接口接收的JSON数据
{ "data": { "id": 1, "content": "Hello, test!", "createdAt": "2026-04-19T08:30:00-04:00", "createdAt2": "2026-04-19T08:30:00-04:00" } }
控制器方法
@GetMapping("/data") public DataRecord getData() { return dataClient.getData(); }
HTTP Client接口定义
@HttpExchange(url = "http://localhost:3000") public interface DataClient { @GetExchange("/data") DataRecord getData(); }
数据实体Record类
public record DataRecord( @JsonProperty("id") Long id, @JsonProperty("content") String content, @JsonFormat(without = JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, with = {}) @JsonProperty("createdAt") OffsetDateTime createdAt, @JsonProperty("createdAt2") OffsetDateTime createdAt2 ) {}
全局配置(application.properties)
# Old way #spring.jackson.deserialization.adjust-dates-to-context-time-zone=false # New way spring.jackson.datatype.datetime.adjust-dates-to-context-time-zone=false spring.jackson.datatype.datetime.write-dates-with-context-time-zone=false
当前现象
调用控制器后返回结果如下:
{ "id": 1, "content": "Hello, test!", "createdAt": "2026-04-19T08:30:00-04:00", "createdAt2": "2026-04-19T12:30:00Z" }
createdAt字段因添加了注解保留了原始时区偏移,但createdAt2仍被转换为UTC时区,全局配置未生效。
需求
是否存在无需为每个OffsetDateTime字段添加注解的全局配置方案,来禁用默认的UTC转换行为?
内容的提问来源于stack exchange,提问作者Peter Kipping
相关产品推荐
相关产品推荐

