Springboot中全局配置时间格式化不能正常使用问题

  默认解决方案:

@Configuration
public class GlobalDateFormatConfig implements WebMvcConfigurer{

@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = converter.getObjectMapper();
// 生成JSON时,将所有Long转换成String
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
// 时间格式化
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.DATE_FORMAT_DEFAULT));
// 设置格式化内容
converter.setObjectMapper(objectMapper);
converters.add(0, converter);
}

}

  这种方案大部分情况可以使用,但是我这边有个特殊情况。

  管理系统的接口接受/返回参数是没有加密的,这种情况完全没问题;

  但是手机端的接口接受/返回参数都是有加密的,像上面那样配置会导致手机端请求接口出现问题,通过如下方式配置即可:

@Configuration
public class GlobalDateFormatConfig implements WebMvcConfigurer{

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.forEach(converter -> {
            if(converter instanceof MappingJackson2HttpMessageConverter){
                ObjectMapper objectMapper = ((MappingJackson2HttpMessageConverter)converter).getObjectMapper();
                // 生成JSON时,将所有Long转换成String
                SimpleModule simpleModule = new SimpleModule();
                simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
                simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
                objectMapper.registerModule(simpleModule);
                // 时间格式化
                objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
                objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.DATE_FORMAT_DEFAULT));
                // 设置格式化内容
                ((MappingJackson2HttpMessageConverter)converter).setObjectMapper(objectMapper);
            }
        });
    }

}

 

posted @ 2022-04-26 11:34  不出特产不出矿  阅读(1037)  评论(0)    收藏  举报