Lombok 사용 시 boolean 필드 Getter 문제 해결하기
Spring Boot 프로젝트에서 Lombok의 @Getter를 사용하면 자동으로 getter 메서드가 생성된다. 하지만 boolean 타입 필드에서는 예상과 다르게 동작할 수 있다.
문제 상황
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class MedicineCreateRequestDTO {
private boolean isPrescribed;
}
위처럼 boolean 타입 필드에 대해 @Getter를 적용했고
서비스에서
requestDto.isPrescribed()
작성하고 postman에서 json형식으로
"isPrescribed": true,
이렇게 작성하여 호출하면 isPrescribed가 false가 나오는 오류가 계속 발생했다.
원인
- Lombok은 boolean 필드의 경우 기본적으로 is필드명() 형태의 getter를 생성한다.
- 즉, getIsPrescribed()가 아닌 isIsPrescribed() 가 자동으로 생성된다.
- 따라서 isPrescribed를 가져올 때 getIsPrescribed()를 찾으면 오류가 발생합니다.
해결 방법
필드명을 is 접두사를 제거한 형태로 유지하고, isPrescribed()를 사용한다.
결론
- boolean 필드명은 접두사(is)를 붙이지 않는다!
- Lombok은 boolean 필드에 대해 is필드명() 형태의 getter를 생성한다!
- 이를 해결하려면 isPrescribed()를 호출하거나, 직접 getPrescribed() 메서드를 추가해야 한다.
=> @Getter를 사용할거면 필드명은 prescribed / 호출은 isPrescribed() 사용하기!
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] BaseEntity 만들기 (0) | 2024.10.22 |
---|---|
[Spring Boot] RequestBody vs RequestParam vs PathVariable (0) | 2024.10.21 |
[Spring Boot] 페이징(Paging) (0) | 2024.10.19 |
[Spring Boot] Test Code 작성 + 롬복(LomBok) (1) | 2024.09.12 |
[Day 19] 웹 페이지에서 댓글 삭제하기 (0) | 2024.08.15 |