Spring Framework 2024. 9. 4. 01:37

[Spring][스크랩] HTTP reponse body에서 LocalDateTime을 ISO 8601 String으로 serialize하는 법 (WebMvcConfigurer override 했을 때)

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
'Spring Framework' 카테고리의 다른 글
  • [Spring] 내장 타입 변환 서비스 ConversionService, 모든 Enum Type에 String -> Enum 변환 적용 - ConverterFactory
  • [MapStruct] List에서 요소 하나를 매핑할 함수 지정하는 법 - @IterableMapping
  • [Spring] Spring Web이 Request Parameter를 바인딩하는 과정, 내부 구현 분석하기 - 생성자, getter, setter
  • [Spring][스크랩] Request Param의 타입으로 enum을 지정하는 법
개발자 이우진
이우진 기술 블로그
  • All (86)
    • Spring Framework (20)
    • MSA (7)
      • Event Driven Architecture (3)
    • Java (3)
    • Flink (2)
    • Computer Science (9)
      • Object Oriented Programming (3)
    • Problem Solving (15)
    • Design Pattern (0)
    • React (4)
    • Javascript (2)
    • Web (3)
    • Tools & Environment (3)
    • C++ (2)
    • misc (5)
    • Essay (3)
      • 기술 회고 (5)
  • 홈
  • 태그
  • 관리자
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
[Spring][스크랩] HTTP reponse body에서 LocalDateTime을 ISO 8601 String으로 serialize하는 법 (WebMvcConfigurer override 했을 때)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.