【发布时间】:2018-09-19 16:31:44
【问题描述】:
我已将我的 Spring Boot 项目从 1.5.8 升级到 2.0.4。我注意到以前我们所有的日期都作为时间戳返回,这很好。由于升级日期以日期的形式出现,为了让它们再次以时间戳的形式出现,我将以下内容添加到我的 yml 文件中:
jackson:
serialization:
write-dates-as-timestamps: true
现在所有日期都作为日期返回。想不通为什么。我们有一个配置类,它定义了一个 jacksonMessageConverter bean(在转换 rabbitMq 的消息时需要),不确定这是否会以某种方式破坏转换?
非常感谢任何帮助
public class ApplicationConfig{
@Bean
public AuditorAware<String> auditorProvider() {
return new AuditorAwareImpl();
}
@Bean
public Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new
CachingConnectionFactory(<host>);
connectionFactory.setUsername(<user>);
connectionFactory.setPassword(<pas>);
connectionFactory.setVirtualHost(<vhost>);
return connectionFactory;
}
@Bean
public RabbitTemplate rabbitTemplate() {
return new RabbitTemplate(connectionFactory());
}
更新:
我已经在我的配置类中添加了以下内容,现在它正在工作,任何想法为什么我需要这个?为什么它没有从 Spring Boot 属性中获取?
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.featuresToEnable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return builder;
}
它不适用于我定义格式的日期字段,我该如何解决这个问题?:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
【问题讨论】:
-
您使用什么类型的日期?
java.util.Date,乔达DateTime,java8LocalDate,...?更好的是,在编辑中添加您的pom.xml以及您的序列化类。 -
我错过了发行说明中的这一更改。感谢您指出这一点!
标签: spring spring-boot jackson