springboot2.0 配置时间格式化不生效问题的解决
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在Spring Boot 2.0中,时间格式化的配置通常是为了使JSON序列化和反序列化过程中日期的展示更加友好。然而,有时候按照官方文档或常见教程配置后,却发现时间格式化并没有生效,这可能是由于一些特定原因导致的。本文将深入探讨这个问题,并提供解决方案。 要实现日期格式化,我们需要在`pom.xml`中添加`spring-boot-starter-data-rest`依赖,这包含了处理日期格式化的相关组件: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> <version>2.0.x.RELEASE</version> </dependency> ``` 接着,在`application.properties`中进行配置: ```properties # 日期格式化 spring.jackson.date-format=yyyy-MM-dd # 设置时区 spring.jackson.time-zone=GMT+8 # 不将日期序列化为时间戳 spring.jackson.serialization.write-dates-as-timestamps=false ``` 理论上,这些配置应该能让你的日期以指定的格式显示。然而,有些开发者发现即使这样设置,日期仍然以时间戳的形式返回。原因可能在于自定义了Web MVC配置。 在Spring Boot 2.0中,推荐使用`WebMvcConfigurationSupport`而不是`WebMvcConfigurerAdapter`来扩展Web MVC配置。然而,如果你创建了一个继承自`WebMvcConfigurationSupport`的配置类,并且在这个类中添加了拦截器,可能会意外地覆盖了Spring Boot自动配置的`WebMvcAutoConfiguration`,其中包括日期格式化的配置。 为了解决这个问题,你可以在自定义的`WebMvcConfigurationSupport`子类中注入一个日期转换的`Bean`。这里是一个示例: ```java @Configuration public class Configurer extends WebMvcConfigurationSupport { @Autowired private HttpInterceptor httpInterceptor; // 定义日期格式转换器 @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")); // 设置日期格式 converter.setObjectMapper(mapper); return converter; } // 添加转换器 @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(jackson2HttpMessageConverter()); super.configureMessageConverters(converters); } // 添加拦截器 @Override protected void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(httpInterceptor).addPathPatterns("/**"); super.addInterceptors(registry); } } ``` 通过这种方式,你可以确保日期格式转换器被正确地添加到消息转换器列表中,即使自定义了Web MVC配置,也能保证日期格式化生效。 总结一下,Spring Boot 2.0中日期格式化不生效的问题通常与自定义的Web MVC配置有关,特别是当使用`WebMvcConfigurationSupport`时。解决方法是在自定义配置类中添加一个日期转换的`Bean`,并确保它在消息转换器列表中被正确使用。这样做可以避免覆盖默认的日期格式化设置,让日期以期望的格式返回给客户端。
- 粉丝: 3
- 资源: 916
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助