FeignDateConfig.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package com.poyee.config;
  2. import com.fasterxml.jackson.databind.DeserializationFeature;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
  5. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
  6. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
  7. import feign.codec.Decoder;
  8. import org.springframework.beans.factory.ObjectFactory;
  9. import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
  10. import org.springframework.cloud.openfeign.support.ResponseEntityDecoder;
  11. import org.springframework.cloud.openfeign.support.SpringDecoder;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  14. import java.time.LocalDateTime;
  15. import java.time.format.DateTimeFormatter;
  16. public class FeignDateConfig {
  17. private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
  18. @Bean
  19. public Decoder feignDecoder() {
  20. ObjectMapper objectMapper = new ObjectMapper();
  21. JavaTimeModule javaTimeModule = new JavaTimeModule();
  22. // 配置 LocalDateTime 的反序列化
  23. DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
  24. javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
  25. javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
  26. objectMapper.registerModule(javaTimeModule);
  27. objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  28. ObjectFactory<HttpMessageConverters> messageConverters = () -> {
  29. MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
  30. return new HttpMessageConverters(converter);
  31. };
  32. return new ResponseEntityDecoder(new SpringDecoder(messageConverters));
  33. }
  34. }