Spring java.time 的 DateTimeFormat 配置
Spring DateTimeFormat Configuration for java.time
我正在开发一个 Spring WebMvc(不是 Spring Boot)项目,该项目使用纯 Java 配置来设置其 bean。我很难让 Spring/Jackson 尊重带有 java.time (jsr310) 对象的 @DateTimeFormat 注释,例如 LocalDateTime.
我在 class 路径上有 jackson-datatype-jsr310 和 jackson-databind jar(版本 2.7.4),以及基本 webmvc 应用程序的相关 spring jar spring-context 和 spring-webmvc(版本 4.3.0.RELEASE)
这是我的相关配置class:
@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);
}
}
我已经通过在 rest 控制器上序列化我的数据模型来对此进行了测试。似乎杰克逊尊重@JsonFormat,但完全忽略了@DateTimeFormat。
我缺少什么额外的配置来让 spring/jackson 遵守@DateTimeFormat?我应该注意的两个注释之间是否有任何关键区别,我可以 运行 仅通过使用 @JsonFormat 解决的问题?
@JsonFormat
是 Jackson 注释; @DateTimeFormat
是一个 Spring 注释。
@JsonFormat
将在 LocalDateTime
到 JSON.
的序列化期间控制格式
Jackson 不知道 Spring 的 @DateTimeFormat
,当它在 JSP 视图中呈现时,它用于控制 Spring 中 bean 的格式.
Javadocs:
我正在开发一个 Spring WebMvc(不是 Spring Boot)项目,该项目使用纯 Java 配置来设置其 bean。我很难让 Spring/Jackson 尊重带有 java.time (jsr310) 对象的 @DateTimeFormat 注释,例如 LocalDateTime.
我在 class 路径上有 jackson-datatype-jsr310 和 jackson-databind jar(版本 2.7.4),以及基本 webmvc 应用程序的相关 spring jar spring-context 和 spring-webmvc(版本 4.3.0.RELEASE)
这是我的相关配置class:
@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);
}
}
我已经通过在 rest 控制器上序列化我的数据模型来对此进行了测试。似乎杰克逊尊重@JsonFormat,但完全忽略了@DateTimeFormat。
我缺少什么额外的配置来让 spring/jackson 遵守@DateTimeFormat?我应该注意的两个注释之间是否有任何关键区别,我可以 运行 仅通过使用 @JsonFormat 解决的问题?
@JsonFormat
是 Jackson 注释; @DateTimeFormat
是一个 Spring 注释。
@JsonFormat
将在 LocalDateTime
到 JSON.
Jackson 不知道 Spring 的 @DateTimeFormat
,当它在 JSP 视图中呈现时,它用于控制 Spring 中 bean 的格式.
Javadocs: