gpt4 book ai didi

java - java.time 的 Spring DateTimeFormat 配置

转载 作者:行者123 更新时间:2023-12-02 03:32:38 31 4
gpt4 key购买 nike

我正在开发一个 Spring WebMvc(不是 Spring Boot)项目,该项目使用纯 Java 配置来设置其 bean。我很难让 Spring/Jackson 尊重 java.time (jsr310) 对象(例如 LocalDateTime)的 @DateTimeFormat 注释。

我的类路径上有 jackson-datatype-jsr310 和 jackson-databind jar(版本 2.7.4),以及基本 webmvc 应用程序 spring-context 和 spring-webmvc(版本 4.3.0.4)的相关 spring jar。发布)

这是我的相关配置类:

@Configuration
@ComponentScan({"com.example.myapp"})
public class WebAppConfig extends WebMvcConfigurationSupport {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
ObjectMapper mapper = Jackson2ObjectMapperBuilder
.json()
.indentOutput(true)
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.findModulesViaServiceLoader(true)
.build();

converters.add(new MappingJackson2HttpMessageConverter(mapper));

super.addDefaultHttpMessageConverters(converters);
}
}

我已经通过休息 Controller 序列化我的数据模型对此进行了测试。看来 Jackson 尊重 @JsonFormat,但完全忽略 @DateTimeFormat。

为了让 spring/jackson 尊重 @DateTimeFormat,我还缺少哪些附加配置?我应该注意这两个注释之间是否有任何关键区别,以及仅使用 @JsonFormat 可能遇到的问题?

最佳答案

@JsonFormat 是 Jackson 注释; @DateTimeFormat 是一个 Spring 注释。

@JsonFormat 将在 LocalDateTime 序列化为 JSON 期间控制格式。

Jackson 不了解 Spring 的 @DateTimeFormat,它用于在 Spring 中在 JSP View 中呈现 bean 时控制其格式。

Java 文档:

http://docs.spring.io/spring-framework/docs/4.2.3.RELEASE/javadoc-api/org/springframework/format/annotation/DateTimeFormat.html

http://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.7.5/com/fasterxml/jackson/annotation/JsonFormat.html

关于java - java.time 的 Spring DateTimeFormat 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37871033/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com