티스토리 뷰
ObjectMapper 설정
Spring에서 설정
모르는 필드에 대해서 Deserialize 할 때 무시하도록 설정을 했어야 했다. 인터넷 글을 검색해가며 ObjectMapper의 Global 설정 방법을 찾아봤지만 막상 적용했을 때 제대로 동작하는게 없었다.
SpringBoot를 주로 사용했어서 xml로 bean을 설정하는 방법에 익숙하지 않아서 많이 헤맸었다.
옆에 계신 분의 도움으로 설정할 수 있었다.
설정 파일을 보면
<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean primary="true" class="com.custom.objectMapper.config.dir.HibernateAwareObjectMapper" />
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
이렇게 ObjectMapper 관련 설정이 HibernateAwareObjectMapper
에 있는 것을 알 수 있었고,
public class HibernateAwareObjectMapper extends ObjectMapper {
private static final long serialVersionUID = 2293078232819971861L;
// objectMapper를 hibernate4module 사용
public HibernateAwareObjectMapper() {
Hibernate4Module hm = new Hibernate4Module();
// @transient 를 serialize 하지 않는 설정을 방지.
hm.disable(Feature.USE_TRANSIENT_ANNOTATION);
registerModule(hm);
}
}
소스는 요로코롬 생겼다.
public class HibernateAwareObjectMapper extends ObjectMapper {
private static final long serialVersionUID = 2293078232819971861L;
// objectMapper를 hibernate4module 사용
public HibernateAwareObjectMapper() {
...
this.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
}
이렇게 설정을 추가하였고, 테스트 결과 제대로 동작하는 것을 확인하였다.
ObjectMapper는 ThreadSafe한가?
링크를 보면
package com.fasterxml.jackson.databind;
import ...
/**
* ObjectMapper provides functionality for reading and writing JSON,
* either to and from basic POJOs (Plain Old Java Objects), or to and from
* ...
*<p>
* Mapper instances are fully thread-safe as of Jackson 3.0.
*<p>
* ...
*/
public class ObjectMapper
implements TreeCodec, Versioned,
java.io.Serializable
{
...
}
Jackson 3.0. 부터 완전히 thread-safe
하다고 한다!
'experiences' 카테고리의 다른 글
리팩토링 하며 겪었던 Redis Serializer 관련 문제 (4) | 2021.12.21 |
---|---|
도메인 사이 의존성 줄이기 (0) | 2021.12.21 |
Kill과 trap (0) | 2021.12.21 |
Autowired와 AOP를 함께 사용할 때 주의 해야 할 점 (0) | 2021.12.21 |
Deadlock 현상 해결 (0) | 2021.12.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday