티스토리 뷰
롬복 플러그인의 설치&설정방법은 이전 포스팅을 참고 한다. ☞ 인텔리제이(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를 한번에 명시한 것과 같은 효과가 난다.
'Java' 카테고리의 다른 글
자바의 클래스패스(classpath) (0) | 2018.12.03 |
---|---|
JDBC(Java DataBase Connectivity) (1) | 2018.11.19 |
인텔리제이(intelliJ)에서 롬복(Lombok) 설치&설정하기 (0) | 2018.11.11 |
List 정렬하기 - 2. Comparator 인터페이스 (0) | 2018.11.10 |
List 정렬하기 - 1. Comparable 인터페이스 (0) | 2018.11.09 |