美文网首页
SpringMVC配置LocalDateTime全局格式化

SpringMVC配置LocalDateTime全局格式化

作者: iwlei | 来源:发表于2021-03-19 09:36 被阅读0次

    1、添加jackson-datatype的依赖

            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jsr310</artifactId>
                <version>2.8.8</version>
            </dependency>
    

    2、创建自定义ObjectMapper类

    package com.bsoft.mdt.common.config;
    
    import cn.hutool.core.date.DatePattern;
    import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.cfg.PackageVersion;
    import com.fasterxml.jackson.databind.module.SimpleModule;
    import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
    import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
    import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
    
    import java.text.SimpleDateFormat;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.ZoneId;
    import java.time.format.DateTimeFormatter;
    import java.util.Locale;
    import java.util.TimeZone;
    
    /**
     * @author wl
     * @date 2021/3/18 17:04
     * @description 解决返回数据的时间格式和空值问题
     */
    public class CustomObjectMapper extends ObjectMapper {
        public CustomObjectMapper() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            this.setDateFormat(sdf);
            this.setTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
            this.registerModule(new JavaTimeModule());
            this.setLocale(Locale.getDefault());
            this.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        }
    
        public class JavaTimeModule extends SimpleModule {
            public JavaTimeModule() {
                super(PackageVersion.VERSION);
                this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
                this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
                this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
                this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
                this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
                this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
            }
        }
    }
    

    3、在spring.xml添加相关配置

        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="objectMapper">
                        <bean class="com.bsoft.mdt.common.config.CustomObjectMapper"/>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
    

    相关文章

      网友评论

          本文标题:SpringMVC配置LocalDateTime全局格式化

          本文链接:https://www.haomeiwen.com/subject/iixvcltx.html