spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
当项目中需要使用拦截器时,需要在配置类继承WebMvcConfigurationSupport 类(springboot 2.0之后,之前是继承WebMvcConfigurerAdapter)重写其中的添加拦截器相关方法,但是在添加拦截器并继承WebMvcConfigurationSupport后会覆盖@EnableAutoConfiguration关于WebMvcAutoConfiguration的配置!从而导致spring.jackson.date-format 失效
解决方法一:
实现 WebMvcConfigurer。
将:extends WebMvcConfigurationSupport 改为:implements WebMvcConfigurer
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor).addPathPatterns("/**"); // 上传图片的路径除外
super.addInterceptors(registry);
}
}
解决方法二:
在配置类中定义时间格式转换器
@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {
//定义时间格式转换器
@Bean
public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
converter.setObjectMapper(mapper);
return converter;
}
//添加转换器
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//将我们定义的时间格式转换器添加到转换器列表中,
//这样jackson格式化时候但凡遇到Date类型就会转换成我们定义的格式
converters.add(jackson2HttpMessageConverter());
}
}