Lombok 에서 'is' prefix가 붙은 컬럼의 boolean과 Boolean의 타입 차에 따라 직렬화시 값이 달라진다.
@Getter
@Setter
public class Member {
private boolean isDisabled;
public void test(){
this.setDisabled(true); //Lombok - 자동생성된 setter
this.isDisabled(); //Lombok - 자동생성된 getter
}
}
@Getter
@Setter
public class Member {
private Boolean isDisabled;
public void test(){
this.setIsDisabled(true); //Lombok - 자동생성된 setter
this.getIsDisabled(); //Lombok - 자동생성된 getter
}
}
위와 같이 객체의 속성이 boolean 타입에 'is' prefix를 사용하게 될 경우, getter가 isXXXX로 생성되기 때문에 정상적인 동작이 이루어지지 않는다 때문에 아래처럼 @JsonProperty의 is를 제거한 상태로 넣거나 getIsXXXX() getter() 메서드를 작성하면 정상 동작한다.
@Getter
@Setter
public class Member {
@JsonProperty("disabled")
private boolean isDisabled;
public void test(){
this.setDisabled(true); //Lombok - 자동생성된 setter
}
}
다른 방법은 타입을 Warpper class인 Boolean으로 사용하여 getter, setter를 생성하면된다.
반응형