[Spring] Lombok 사용시 is prefix 는 왜 없어질까 ?
isNew 라는 신상품 여부를 나타내는 변수가 있었는데 response 로 DTO 내려줄 때 is 가 사라지고 new 라고만 계속 보여졌다.
그냥 new 로 쓰면 되겠지 .. 했는데 프론트에서 new 가 예약어라 사용하기 어려우니 다른 걸로 변경해달라고 요청이 들어왔다.
근데 왜 is 는 사라지는 걸까 ?
그건
바로바로
바로바로바로바로바로
@Lombok 때문이다.
Lombok 은 boolean 타입일 때 변수의 prefix 가 is 인 경우 getIsNew() 대신, isNew() 라고 get 메소드를 만든다.
PackageDto 라는 Dto 를 하나 만들고, boolean 타입인 변수를 하나 만들어보자.
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class PackageDto {
Boolean isNew;
}
😇 Lombok 이 자동으로 만들어준 메소드 확인하기
command + 7 버튼으로 Structure 의 메소드를 보면 된다.
EX)
Structure 로 만들어진 메소드를 확인해보면
@Getter 로 만들어진 메소드
getIsNew()
가 아니라 isNew()
이고,
@Setter 로 만들어진 메소드
setIsNew()
가 아니라 setNew()
인 걸 확인 할 수 있다.
Boolean 일 때에는 정상적으로 get, set 메소드가 생성된다.
즉, 변수가 boolean 일 때 Lombok 은 앞에 is 프리픽스를 붙여서 메소드를 자동 생성해준다.
자세한 내용은 Lombok 공식 문서 참고 👉 Getter, Setter 관련 공식문서
해결하는 방법으로는 총 두가지가 있다
1️⃣ Boolean 타입 사용하기
Boolean 같은 경우 Lombok 에서 get 메소드를 만들 때 is 가 아닌 get 으로 get 메소드를 생성한다. 하지만 값에 null 값이 들어가선 안되는 경우 2번째 방법을 사용하는게 더 바람직하다.
2️⃣ getIsXXXX() getter() 메소드를 직접 작성하기
해석해보자면,
동일한 이름(대문자와 소문자를 구분하지 않음)과 동일한 매개 변수 수를 가진 메서드가 이미 있으면 메서드가 생성되지 않습니다. 예를 들어 메서드 'getFoo(String...)'가 이미 있으면 'getFoo()'가 생성되지 않습니다. x)"기술적으로 그 방법을 만드는 것이 가능할지라도 말입니다.
와 같은 의미다.
getIsNew() 를 작성하면 이미 isNew 에 대한 getter 메소드는 있구나 라고 판단하고 isNew 에 대한 get 메소드를 만들지 않는다.
Author And Source
이 문제에 관하여([Spring] Lombok 사용시 is prefix 는 왜 없어질까 ?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@soyeon207/Spring-Lombok-사용시-is-prefix-는-왜-없어질까저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)