package com.poyee.config; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import feign.codec.Decoder; import org.springframework.beans.factory.ObjectFactory; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.cloud.openfeign.support.ResponseEntityDecoder; import org.springframework.cloud.openfeign.support.SpringDecoder; import org.springframework.context.annotation.Bean; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class FeignDateConfig { private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; @Bean public Decoder feignDecoder() { ObjectMapper objectMapper = new ObjectMapper(); JavaTimeModule javaTimeModule = new JavaTimeModule(); // 配置 LocalDateTime 的反序列化 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); objectMapper.registerModule(javaTimeModule); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); ObjectFactory messageConverters = () -> { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper); return new HttpMessageConverters(converter); }; return new ResponseEntityDecoder(new SpringDecoder(messageConverters)); } }