어느날 갑자기 Spring mvc(v3.2.2
)로 구현해놓은 REST API JSON 응답값에 null 값을 가지고 있는 필드가 포함이 되는 문제가 생겼다.
분명히 도메인 객체에 @JsonSerialize(include = Inclusion.NON_NULL)
이 설정되어있고 잘 동작하던 코드였다.
한참동안 디버깅을 해보다가 도저히 원인을 찾을수가 없어 결국 내가 커밋했던 부분들을 하나씩 롤백해보았다.(다행히 프로젝트는 초기상태였고 활발하게 개발중이 아니였다)
어이없게도 aws 를 사용하기 위해 추가 했던 aws-java-sdk 1.5.6
가 문제였다.
릴리즈 노트 : http://aws.amazon.com/releasenotes/Java/7728064532185471
1 2 3 4 5 6 |
|
원인은 aws-java-sdk 1.5.6
버전부터 jackson 라이브러리를 2.1.2
버전을 사용한다.
프로젝트에서 이미 사용중인 jackson 라이브러리는 1.9.6
이였다.
소스에는 1.5.7
로 되어있으나 maven 라이브러리 aws-java-sdk 1.5.6
는 2.1.2
버전을 사용한다.
하지만 아무리 릴리즈 노트를 찾아봐도 이에 대한 설명은 없다.
당장 해결책은 aws-java-sdk 1.5.5
를 사용하도록 하였으나 추후에 aws-java-sdk
를 업데이트 해야할 경우에 문제가 될 수도 있다.
아무래도 jackson 2.1.2
라이브러리가 프로젝트에 포함되면서 기존 1.9.6
버전을 무력화 시켜버리는것 같다.
참고로 jackson 2.1.2
버전은 패키지명이 com.fasterxml
로 시작하고 1.9.6
버전은 org.codehaus
로 시작한다.