专栏首页吟风者springboot 2.0 配置时间格式化不生效问题

springboot 2.0 配置时间格式化不生效问题

在application.properties进行如下配置:

#日期格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.write-dates-as-timestamps=false

注:

  • 第1行设置格式
  • 第2行设置时区
  • 第3行表示不返回时间戳,如果为 true 返回时间戳,如果这三行同时存在,以第3行为准即返回时间戳

但是,网上很多人照着做了还是有问题,照样不能格式化,为嘛? 这里大家注意,看看自己的代码有没有因为添加拦截器而创建了一个配置类,该类继承了WebMvcConfigurationSupport,就是他!以前是用 WebMvcConfigurerAdapterspringboot 2.0 建议使用 WebMvcConfigurationSupport 。但是在添加拦截器并继承 WebMvcConfigurationSupport后会覆盖@EnableAutoConfiguration关于WebMvcAutoConfiguration的配置!从而导致所有的Date返回都变成时间戳! 可以采用另外一种方式,在你继承WebMvcConfigurationSupport的子类中添加日期转换的bean

@Configuration
public class Configurer extends WebMvcConfigurationSupport{
    
    @Autowired
    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) {
        //将我们定义的时间格式转换器添加到转换器列表中,
        //这样jackson格式化时候但凡遇到Date类型就会转换成我们定义的格式
        converters.add(jackson2HttpMessageConverter());
    }

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        // TODO Auto-generated method stub
        registry.addInterceptor(httpInterceptor).addPathPatterns("/**");
        super.addInterceptors(registry);
    }   
}

或者可以实现WebMvcConfigurer接口

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH")
                .allowCredentials(true).maxAge(3600);
    }
}

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1jx0g2a8qtn8e

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hadoop集群环境搭建

    此文档编写使用的系统为ubuntu-18.04.1-live-server-amd64.iso版本。

    吟风者
  • springboot使用ehcache缓存

    在resources目录下新建config文件夹,在文件夹中建立ehcache.xml文件。

    吟风者
  • Vue路由history模式踩坑记录:nginx配置解决404问题

    vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载。但是如果我们不想hash这种以#号结...

    吟风者
  • 大数据-经典案例上行流量倒序排序(递减排序)

    分析,以需求一的输出数据作为排序的输入数据,自定义FlowBean,以FlowBean为map输 出的key,以手机号作为Map输出的value,因为MapRe...

    cwl_java
  • JAVA中重写equals()方法为什么要重写hashcode()方法说明

    重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值。如果在将一个对象用put()方法添加进HashM...

    bear_fish
  • Spring 中的自动装配,如果遇到多个实例如何处理?

    标记了@Autowired 注解的字段/方法,会由 Spring 容器自动的赋值一个实例化的对象。@Autowired 总是采用 byType 的方式实现自动装...

    水货程序员
  • 解决MacOS升级系统Sierra到Mojave后git报错

    (adsbygoogle = window.adsbygoogle || []).push({});

    阿dai学长
  • SpringBoot中spring.jackson.date-format配置失效的解决办法

    如果发现spring.jackson.date-format失效,是因为mvc配置中加入了如下注解:

    飞奔去旅行
  • AtomicIntegerArray源码解析

    AtomicInteger原子类是保障Integer的高并发的原子性的,那么AtomicAIntegerArray就是Integer类型数组的高并发原子性质的数...

    程序员_备忘录
  • 使用Provider来进行状态管理

    当我们想在多个页面(组件/Widget)之间共享状态(数据),或者一个页面(组件/WIdget)的多个子组件之间共享状态(数据),这个时候我们就需要用Flutt...

    拉维

扫码关注云+社区

领取腾讯云代金券