我已经将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());
}
更新:
此后,我在config类中添加了以下内容,现在它可以正常工作了,为什么有这个想法?为何它不只是从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'")
答案 0 :(得分:2)
应该不是:
spring:
jackson:
serialization:
write-dates-as-timestamps: true
您是否缺少spring
前缀?