[Spring] @RequestBody 사용 시 boolean 변수 바인딩 에러

JJinu·2023년 2월 13일
0

서론

토이프로젝트 중 @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를 제거하는 방법을 사용하여 해결하였습니다. ^_^

profile
코린이 탈출을 위한 한권의 책

0개의 댓글

관련 채용 정보