• java后端修改日期格式


    有了他再也不用加@JsonFormat了

    第一步继承WebMvcConfigurationSupport类

    实现其中方法

    1. package com.sky.config;
    2. import com.sky.interceptor.JwtTokenAdminInterceptor;
    3. import com.sky.interceptor.JwtTokenUserInterceptor;
    4. import com.sky.json.JacksonObjectMapper;
    5. import lombok.extern.slf4j.Slf4j;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.context.annotation.Bean;
    8. import org.springframework.context.annotation.Configuration;
    9. import org.springframework.http.converter.HttpMessageConverter;
    10. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    11. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    12. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    13. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
    14. import springfox.documentation.builders.ApiInfoBuilder;
    15. import springfox.documentation.builders.PathSelectors;
    16. import springfox.documentation.builders.RequestHandlerSelectors;
    17. import springfox.documentation.service.ApiInfo;
    18. import springfox.documentation.spi.DocumentationType;
    19. import springfox.documentation.spring.web.plugins.Docket;
    20. import java.util.List;
    21. /**
    22. * 配置类,注册web层相关组件
    23. * 一般wep配置都需要继承WebMvcConfigurationSupport这个类
    24. */
    25. @Configuration
    26. @Slf4j
    27. public class WebMvcConfiguration extends WebMvcConfigurationSupport {
    28. /**
    29. * 扩展mvc框架的消息转换器
    30. * @param converters
    31. */
    32. protected void extendMessageConverters(List> converters) {
    33. log.info("开始扩展消息转换器...");
    34. //创建一个消息转化器对象
    35. MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    36. //设置对象转换器,可以将Java对象转为json字符串
    37. converter.setObjectMapper(new JacksonObjectMapper());
    38. //将我们自己的转换器放入spring MVC框架的容器中 ,默认的消息是我放在最后一位的,需要设置位置把它放在第一位
    39. converters.add(0,converter);
    40. }
    41. }

    在定义一个对象转换器

    1. package com.sky.json;
    2. import com.fasterxml.jackson.databind.DeserializationFeature;
    3. import com.fasterxml.jackson.databind.ObjectMapper;
    4. import com.fasterxml.jackson.databind.module.SimpleModule;
    5. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
    6. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
    7. import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
    8. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
    9. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
    10. import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
    11. import java.time.LocalDate;
    12. import java.time.LocalDateTime;
    13. import java.time.LocalTime;
    14. import java.time.format.DateTimeFormatter;
    15. import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
    16. /**
    17. * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
    18. * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
    19. * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
    20. */
    21. public class JacksonObjectMapper extends ObjectMapper {
    22. public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    23. //public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    24. public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
    25. public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
    26. public JacksonObjectMapper() {
    27. super();
    28. //收到未知属性时不报异常
    29. this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
    30. //反序列化时,属性不存在的兼容处理
    31. this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    32. SimpleModule simpleModule = new SimpleModule()
    33. .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
    34. .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
    35. .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
    36. .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
    37. .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
    38. .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
    39. //注册功能模块 例如,可以添加自定义序列化器和反序列化器
    40. this.registerModule(simpleModule);
    41. }
    42. }

  • 相关阅读:
    【软考 系统架构设计师】计算机组成与体系结构⑥ 流水线
    Vue源码学习(十二):列队处理(防抖优化,多次调用,只处理一次)
    Perl语言用多线程爬取商品信息并做可视化处理
    第六节:连接、列表、表格样式
    actix http消息处理源码剖析
    Web基础和HTTP协议
    双向电平转换电路
    LVS负载均衡群集之原理叙述
    怎么在dreamweaver嵌套盒子?
    [msg_msg] corCTF2021 -- fire_of_salvation
  • 原文地址:https://blog.csdn.net/Mazhen5255/article/details/136633491