기본 생성자가 없고, 필드가 1개여도 코틀린은 역직렬화가 된다
class BepozDTOTest {
@Test
fun convertTest() {
val mapper = jacksonObjectMapper()
val mapper2 = ObjectMapper()
val json = "{\"name\": \"kang\"}"
val result: BepozDTO = mapper.readValue(json)
val result2: BepozDTO = mapper2.readValue(json)
}
}
data class BepozDTO(
val name: String
)
자바의 경우 jackson 2.13버전 부터 추가된 jackson-module-parameter-names
모듈에 의해 기본 생성자가 없어도 다른 생성자를 통해 body값을 역직렬화하여 읽어올 수가 있었다. 다만, 필드가 1개인 경우에는 이유는 모르겠지만 불가능했다.
그런데 코틀린에서는 필드가 1개여도 원활하게 돌아가는 것을 확인할 수가 있었다.
그 이유는 jackson-module-kotlin
모듈이 존재하기 때문에 그런 것이라고 추측하고 있다(100% 인 것 같긴함).
다만, 테스트 코드에서 ObejctMapper()
로만 json을 읽어오면 예외가 터진다.
jacksonObjectMapper()
는 문제없이 json을 읽어올 수가 있는데 해당 메서드 내부를 살펴보면
fun jacksonObjectMapper(): ObjectMapper = jsonMapper { addModule(kotlinModule()) }
kotlinModule을 추가한 것을 확인할 수가 있다.
이를 통해 코틀린은 data class를 이용한 DTO 클래스도 잘 읽어올 수가 있다.
'Java' 카테고리의 다른 글
[Java] AttributeConverter를 이용하여 DB에 Entity의 컬렉션 필드 저장하기 (0) | 2022.08.02 |
---|---|
[Java] ThreadLocal에 대해 (0) | 2021.12.05 |
[Java] Atomic, Volatile, Synchronized 에 대해 (2) | 2021.09.20 |
[Java] Reflection 사용법 정리 (0) | 2021.09.08 |
[Java] ExecutorService 와 ThreadPoolExecutor 에 대해 (0) | 2021.09.06 |