JVM/Spring

[Spring] Spring의 ObjectMapper 쉽게 Custom 만들기

Hyo Kim 2022. 12. 26. 10:00
728x90
반응형

🤔 서론

프로젝트를 진행하다 보면 objectMapper를 새로 만들어서 할 일이 종종 생긴다.

이때 새로 만들게 되면 Spring에서 기본적으로 제공해주는 옵션들을 찾아 동일하게

적용한 후에 내가 원하는 옵션들을 추가하고 싶을 수 있다.

 

어떻게 쉽게 만들 수 있을까?


😏 본론

스프링에서 기본적으로 설정하는 properties와 기본적으로 넣어주는 모듈들이다.

이런 걸 할 때마다 일일이 찾아 설정해 주고, 반복적으로 하는 건 매우 귀찮은 일이다.

 

스프링에서 기본으로 제공하는 ObjectMapper를 쉽게 만드는 법은 간단하다.

fun objectMapper(): ObjectMapper =
        Jackson2ObjectMapperBuilder().build()

위처럼 Jackson2ObjectMapperBuilder 를 사용해서 build를 하면 된다.

build

간단하게 build()를 보면 configure(mapper); 가 있는데 해당 부분에서 위에서 설명했던 기본적인 설정들을 진행해 준다.

해당 빌더를 사용하면 쉽게 만들 수 있으니 앞으로는 설정을 실수로 누락하는 일을 줄일 수 있다.

 

아예 새롭게 만들고 싶다면?

@Deprecated

new ObjectMapper()로 만들면 MapperFeature를 받는 부분들이 모두 @Deprecated가 되어있다.

그 외에도 많은 부분이 deprecated가 되었는데 objectMapper 측에서

빌더패턴을 통해 불변으로 만드는 방식으로 넘어가고 싶어 하는 것 같다.

 

3.0부터는 @Deprecated된 메서드들은 지워질 거라고 설명하기 때문에 언제 3.0이 릴리즈 될진 몰라도

미리 차근차근 변경해두는 게 좋을 것 같다.

 

그럼 어떻게 바꾸냐?

fun objectMapper(): ObjectMapper =
        JsonMapper.builder().disable(MapperFeature.DEFAULT_VIEW_INCLUSION).build()

JsonMapper.builder()로 변경할 수 있다.


😳 결론

아예 새로운 ObjectMapper를 만들고 싶을 땐 당연히 새로 만들면 됩니다!

이 내용은, Spring에서 정의한 ObjectMapper에서 속성을 추가 및 변경을 하고 싶을 때입니다.

 

피드백은 언제나 환영입니다!

728x90
반응형