토이프로젝트 중 @Reqeust 어노테이션을 적용한 Dto에서 boolean 데이터를 제대로 전달 받지 못하는 문제가 발생하여 이를 정리합니다.
@RequestBody 어노테이션을 활용해 Dto 객체로 전달 받으려 하였는데 boolean 타입의 데이터가 정상적으로 넘어오지 않는 문제가 발생하였습니다.
body에는 true로 넘겨주었지만 결과값에는 false가 반환되는 것을 확인하였습니다.
원인 으로는
lombok에서 제공하는 @Getter 혹은 @Setter 어노테이션을 사용 할 경우 자동으 getter/setter 메서드를 생성해주는데
이 때 boolean 타입의 변수에 붙는 prefix는 get이 아닌 is이므로 @RequestBody에서 찾을 수 없어 바인딩 되지 않아 발생하는 문제였습니다.
boolean 변수에 is prefix를 붙여놓은 상태에서 @Getter 어노테이션을 사용하니, 내부적으로 isIsSeat() 같은 이상한 네이밍의 메서드가 생성되서
@RequestBody에서 바인딩에 사용하는 Jackson 라이브러리의 ObjectMapper에서 필드를 찾을 수 없어서 바인딩 되지 않아 Dto에 정상적으로 값이 입력되지 않았던 것으로 확인되었습니다.
그렇기 때문에 boolean 변수명에서 is prefix를 제거하는 방법을 사용하여 해결하였습니다. ^_^