https://stackoverflow.com/a/73478165/21138374
@EnableWebMvc showing date in array formate
We had two application on spring boot. One was spring rest api based & second was spring MVC based. We have megred both the application due to some business reasons as the context was the same ...
stackoverflow.com
@Configuration
public class WebConfig implements WebMvcConfigurer {
// 다른 코드
/**
* HTTP Message Converter 설정
* <p>
* response JSON time format - ISO 8601 String 포맷으로 설정
*/
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
// Remove the default MappingJackson2HttpMessageConverter
converters.removeIf(converter -> {
String converterName = converter.getClass().getSimpleName();
return converterName.equals("MappingJackson2HttpMessageConverter");
});
// Add custom MappingJackson2HttpMessageConverter
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
converter.setObjectMapper(objectMapper);
converters.add(converter);
WebMvcConfigurer.super.extendMessageConverters(converters);
}
}
WebMvcConfigurer를 Override했다면 `Jackson2ObjectMapperBuilderCustomizer`를 이용하는 방식이 작동하지 않는데, 그 때 사용할 수 있는 방법이다.
`Jackson2ObjectMapperBuilderCustomizer`는 `Jackson2ObjectMapperBuilder`로 auto configuration되는 ObjectMapper를 수정한다. 그러나 WebMvcConfigurer를 implement한 클래스(Configuration Bean)을 생성하면 기본값이 아닌 개발자가 생성한 빈 `WebConfig`를 사용하게 되고, 이것이 기본값으로 `MappingJackson2HttpMessageConverter`를 쓰고 있어서 이 설정을 변경해야 적용되는 것으로 보인다.
'Spring Framework' 카테고리의 다른 글
[Spring] 내장 타입 변환 서비스 ConversionService, 모든 Enum Type에 String -> Enum 변환 적용 - ConverterFactory (0) | 2024.08.24 |
---|---|
[MapStruct] List에서 요소 하나를 매핑할 함수 지정하는 법 - @IterableMapping (0) | 2024.08.24 |
[Spring] Spring Web이 Request Parameter를 바인딩하는 과정, 내부 구현 분석하기 - 생성자, getter, setter (0) | 2024.08.19 |
[Spring][스크랩] Request Param의 타입으로 enum을 지정하는 법 (0) | 2024.08.18 |
[JPA] deleteBy는 N개의 DELETE 쿼리로 실행된다 (0) | 2024.08.16 |