diff --git a/src/main/java/Journey/Together/global/config/OpenFeignConfig.java b/src/main/java/Journey/Together/global/config/OpenFeignConfig.java index 677f287..7ddaf5d 100644 --- a/src/main/java/Journey/Together/global/config/OpenFeignConfig.java +++ b/src/main/java/Journey/Together/global/config/OpenFeignConfig.java @@ -5,9 +5,12 @@ import org.springframework.cloud.openfeign.support.SpringEncoder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import feign.Logger; import feign.QueryMapEncoder; @@ -15,6 +18,7 @@ import feign.codec.Decoder; import feign.jackson.JacksonDecoder; import feign.codec.Encoder; +import feign.jackson.JacksonEncoder; import feign.querymap.BeanQueryMapEncoder; @Configuration @@ -26,12 +30,13 @@ Logger.Level feignLoggerLevel() { return Logger.Level.BASIC; } - @Bean - public Encoder feignEncoder() { - return new SpringEncoder(HttpMessageConverters::new); + public Encoder feignEncoder(ObjectMapper objectMapper) { + return new SpringEncoder(() -> new HttpMessageConverters( + new MappingJackson2HttpMessageConverter(objectMapper) + )); } - + @Bean Decoder feignDecoder(ObjectMapper m) { return new JacksonDecoder(m); } @Bean public QueryMapEncoder queryMapEncoder() { return new BeanQueryMapEncoder(); @@ -40,15 +45,12 @@ public QueryMapEncoder queryMapEncoder() { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); // LocalDate, LocalDateTime 지원 + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // ISO 포맷으로 objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); return objectMapper; } - - @Bean - public Decoder feignDecoder() { - return new JacksonDecoder(objectMapper()); - } - @Bean public Retryer feignRetryer() { // period = 100ms, maxPeriod = 1s, maxAttempts = 3