@RequestBody 로 Enum 타입을 넘기는 경우가 종종 발생합니다.
이 때는 @RequestParam 때 Enum 파라미터에 바인딩하기 위해서 사용했던 Converter 가 동작하지 않습니다. JSON 으로 넘어오기 때문이죠.
하지만 더 간단한 해결책이 있습니다. 바로 @JsonCreator 입니다.
JsonCreator 어노테이션을 사용하여 json데이터로 enum 타입이 넘어왔을 때 string to enum converter 처리를 해줄 수 있습니다
클라이언트에서 임의의 String 값을 보내면 @JsonCreator 가 붙어있는 해당 함수를 통해서 객체를 생성하고 필드를 채워줍니다.
Jackson이 deserialize 과정에서 별도의 설정이 없을 때 처리하는 동작은 다음과 같습니다.
위의 과정 중 @JsonCreator는 (기본 생성자) + (setter) 조합을 대체합니다.
이 어노테이션이 생성자나 팩토리 메서드 위에 선언되면 Jackson은 해당 함수를 통해 객체를 생성하고 필드를 생성과 동시에 채웁니다.