RATSENO

[Lombok]"is"prefix가 붙은 boolean, Boolean 본문

DEV/JAVA

[Lombok]"is"prefix가 붙은 boolean, Boolean

RATSENO 2021. 3. 16. 14:32

어노테이션만 붙이면 자동으로 getter, setter, 생성자 등등 여러 가지를 생성해주는 Lombok을 자주 사용합니다.

IDE에서 자동생성으로 작성하는 경우도 있지만, 개발 편의성을 위해 Lombok을 쓰는 편입니다.

 

속성 값으로 boolean을 사용하며 네이밍을  is"XXXX" 로 사용할 경우

IDE에서 생성되는 getter, setter의 모습

Lombok을 이용하여 생성되는 getter, setter의 모습이 다릅니다.

 

이러한 경우 때문에, 간단하게 자주 사용되는 Mybatis(마이바티스)에서 해당 속성 값을 찾을 때 문제가 발생하곤 합니다.

 

boolean - IDE 자동생성

public class Member {

    private boolean isNew;

    public boolean isNew() {
        return isNew;
    }

    public void setNew(boolean aNew) {
        isNew = aNew;
    }
}

Boolean - IDE 자동생성

public class Member {

    private Boolean isNew;

    public Boolean getNew() {
        return isNew;
    }

    public void setNew(Boolean aNew) {
        isNew = aNew;
    }
}

boolean - Lombok 자동생성

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Member {

    private boolean isNew;

    public void test(){
        this.setNew(true);  //Lombok - 자동생성된 setter
        this.isNew();       //Lombok - 자동생성된 getter
    }
}

Boolean - Lombok 자동생성

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Member {

    private Boolean isNew;

    public void test(){
        this.setIsNew(true);  //Lombok - 자동생성된 setter
        this.getIsNew();      //Lombok - 자동생성된 getter
    }
}

 

마이바티스를 사용할 경우 xml파일에 #{isNew}를 셋팅할때,

전달된 객체에서 해당 속성의 getXXXX를 사용하게 됩니다.

 

객체의 속성이 boolean 타입에 "is" prefix를 사용하게 될 경우, getter가 isXXXX로 생성되기 때문에정상적인 동작이 이루어지지 않습니다.

 

이를 해결하기 위해서는 타입을 래퍼클래스 Boolean으로 사용하여 getter, setter를 생성하거나

boolean

타입으로 사용하고 싶으면 getIsXXXX() getter() 메서드를 작성하면 정상 동작합니다.

'DEV > JAVA' 카테고리의 다른 글

두개의 List에서 삭제된 항목, 추가된 항목 필터링  (0) 2021.05.11
CompletableFuture<T> -2  (0) 2021.03.22
CompletableFuture<T> -1  (0) 2021.03.14
[JAVA]TreeSet  (0) 2020.02.05
[JAVA]Map 컬렉션 - HashMap  (0) 2020.02.05
Comments