有了他再也不用加@JsonFormat了
第一步继承WebMvcConfigurationSupport类
实现其中方法
- package com.sky.config;
-
- import com.sky.interceptor.JwtTokenAdminInterceptor;
- import com.sky.interceptor.JwtTokenUserInterceptor;
- import com.sky.json.JacksonObjectMapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.converter.HttpMessageConverter;
- import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
-
- import java.util.List;
-
- /**
- * 配置类,注册web层相关组件
- * 一般wep配置都需要继承WebMvcConfigurationSupport这个类
- */
- @Configuration
- @Slf4j
- public class WebMvcConfiguration extends WebMvcConfigurationSupport {
-
-
- /**
- * 扩展mvc框架的消息转换器
- * @param converters
- */
- protected void extendMessageConverters(List
> converters) { - log.info("开始扩展消息转换器...");
- //创建一个消息转化器对象
- MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
- //设置对象转换器,可以将Java对象转为json字符串
- converter.setObjectMapper(new JacksonObjectMapper());
- //将我们自己的转换器放入spring MVC框架的容器中 ,默认的消息是我放在最后一位的,需要设置位置把它放在第一位
- converters.add(0,converter);
- }
-
- }
在定义一个对象转换器
- package com.sky.json;
-
- import com.fasterxml.jackson.databind.DeserializationFeature;
- import com.fasterxml.jackson.databind.ObjectMapper;
- 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.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- import java.time.format.DateTimeFormatter;
-
- import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
-
- /**
- * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
- * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
- * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
- */
- public class JacksonObjectMapper extends ObjectMapper {
-
- public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
- //public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
- public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
- public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
-
- public JacksonObjectMapper() {
- super();
- //收到未知属性时不报异常
- this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
-
- //反序列化时,属性不存在的兼容处理
- this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-
- SimpleModule simpleModule = new SimpleModule()
- .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
- .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
- .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
- .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
- .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
- .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
-
- //注册功能模块 例如,可以添加自定义序列化器和反序列化器
- this.registerModule(simpleModule);
- }
- }