불변 객체 역직렬화 방법 분석
배경 data class Person(var id: Long? = null, var name: String? = null) fun main() { val objectMapper = ObjectMapper() val person: Person = objectMapper.readValue("{\"id\":1, \"name\": \"junroot\"}", Person::class.java) println(person.name) } ObjectMapper를 통해 역직렬화하는 경우, 기본 생성자를 이용해 객체를 생성한 뒤 자바 리플렉션을 이용해 값을 주입하고 있다. 따라서 기본 생성자가 필요한데 이렇게 되면 프로퍼티들이 불변일 수가 없게된다. @JsonCreator와 @JsonProperty를 통해서 생성 가능하다는 사실을 알게되고 이를 사용했었다. data class Person @JsonCreator constructor( @JsonProperty("id") val id: Long, @JsonProperty("name") val name: String ) fun main() { val objectMapper = ObjectMapper() val person: Person = objectMapper....