티스토리 뷰

Java

롬복(Lombok) 애노테이션 사용하기

siyoon210 2018. 11. 12. 10:00
반응형

롬복 플러그인의 설치&설정방법은 이전 포스팅을 참고 한다. ☞ 인텔리제이(intelliJ)에서 롬복(Lombok) 설치&설정하기

롬복(Lombok)

롬복(Lombok)은 Java에서 반복적으로 작성되는 getters/setters나 equals, hashCode, toString 또는 생성자 관련 코드들을 간결하게 만들어주는 라이브러리다. 사실 자바를 지원하는 웬만한 IDE가 이런 코드들의 자동 생성을 지원하고 있어서 필요성을 못 느낄수도 있으나, 롬복(Lombok)은 유지 보수시에 큰 도움이 된다. 유지보수시에 클래스의 필드의 갯수와 비례해서 길어지는 getters/setters가 없으니 코드가독성이 올라가고, 필드값을 추가삭제 할 때도 getters/setters에 대한 신경을 쓰지 않아도 된다. 


@Getter @Setter

롬복의 @Getter와 @Setter 애노테이션을 클래스명 위에 명시하면, 필드값에 대한 getters/setters 메소드가 자동 생성된다. 아래 예제들을 보면 롬복이 사용되지 않은 클래스와 롬복이 적용된 클래스의 차이를 알 수 있다.


  • getters/setters를 직접 명시한 클래스 (롬복 x)
public class Book {
    private String name;
    private int price;
    private String releaseDate;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getReleaseDate() {
        return releaseDate;
    }

    public void setReleaseDate(String releaseDate) {
        this.releaseDate = releaseDate;
    }
}
  • 롬복의 @Getter @Setter를 사용한 경우
@Getter
@Setter
public class Book {
    private String name;
    private int price;
    private String releaseDate;
}

import 되는 패키지명이 lombok임을 확인하여 같은 이름의 다른 애노테이션을 사용하지 않도록 주의한다.

@NoArgsConstructor @AllArgsConstructor

@NoArgsConstructor는 기본생성자, @AllArgsConstructor는 필드값을 모두 포함한 생성자를 자동 생성해준다.


  • 기본생성자와, 모든 필드값을 받는 생성자를 직접 명시한 클래스 (롬복 x)
public class Book {
    private String name;
    private int price;
    private String releaseDate;

    public Book() {
    }

    public Book(String name, int price, String releaseDate) {
        this.name = name;
        this.price = price;
        this.releaseDate = releaseDate;
    }
}
  • 롬복의 @NoArgsConstructor @AllArgsConstructor를 사용한 경우
@NoArgsConstructor
@AllArgsConstructor
public class Book {
    private String name;
    private int price;
    private String releaseDate;
}

여러가지 기능들

필드값이 3개뿐인 클래스에도 롬복을 이용하여 가독성이 훨씬 좋아졌다. 예제를 보면 사용방법이 어렵지 않음을 알 수 있으니, 다른 애노테이션은 기능만 소개하겠다.


  • @ToString : toString 메소드 자동생성, 클래스명(필드명1=값1, 필드명2=값2, . . . ) 형태로 출력된다. 출력을 원치 않는 필드가 있을 경우, exclude 키워드를 이용한다. ex) @ToString(exclude = "필드명") 
  • @EqualsAndHashCode : equals와 hashCode 메소드 자동생성, equals 메소드가 부모클래스의 필드 값도 비교 하길 원하는 경우 callSuper키워드를 이용한다. 기본값은 false로 되어있다. ex) @EqualsAndHashCode(callSuper = true)
  • @RequiredArgsConstructor : 생성자를 자동 생성하지만, 필드명 위에 @NonNull로 표기된 경우만 생성자의 매개변수로 받는다. 
  • @Data : 위에서 소개한 여러 애노테이션의 조합이다. @Data하나를 명시하는건 @Getter @Setter @ToString @EqualsAndHashCode @RequiredArgsConstructor를 한번에 명시한 것과 같은 효과가 난다.


반응형
댓글