LOMBOK
자바 개발자라면 누구나 경험 했을 것이다. 간단한 Class 하나 만드는데 특히 VO, DTO, Entity등의 Class을 만들 때 getter/setter 함수 등을 기계적으로 생성했어야 했던 귀찮은 작업들을.
1 2 3 4 5 6 7 8 9 |
public class inconvenientClass{ private T a; public T getA () { return a; } public void setA(T a) { this.a = a; } } |
위 코드와 같이 단순히 변수 하나만 정의된 간단한 class이지만, 그 값을 핸들링 하기 위해 쓸데없이 작성해야 하는 코드가 많았다.
물론 IDE의 자동생성 기능을 통해 쉽게 생성할 수 있지만, 여전히 변수 명이 변경되면 다시 getter/setter 함수를 변경해줘야 하는 번거로움이 발생한다. 이를 해결해 주기 나온 게 Lombok 이다. 간단하게 이해하면 Getter/Setter 자동 생성라이브러리라고 생각하면 된다. 물론 더 다양한 기능을 제공한다. 그럼 지금부터 하나씩 알아 가보자
Lombok이란?
Lombok은 자바에서 @Getter,
@Setter 같은 annotation 기반으로 관련 기존 DTO,
VO, Domain Class 작성할 때, 멤버 변수에
대한
Getter/Setter Method, Equals(), hashCode(), ToString()과
멤버 변수에
값을 설정하는
생성자 등등을
자동으로 생성해
주는 라이브러리다.
먼저 Lombok을 사용한 코드와 사용하지 않는 코드를 먼저 보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
public class BasicSampel { private Integer id; private String name;
public Integer getId() { return id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof LombokSampel)) return false;
LombokSampel that = (LombokSampel) o;
if (id != null ? !id.equals(that.id) : that.id != null) return false; return name != null ? name.equals(that.name) : that.name == null; }
@Override public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + (name != null ? name.hashCode() : 0); return result; } }
|
아래 코드는 Lombok을 사용했다. 깜짝 놀랄 정도로 소스가 짧아졌다는 걸 눈으로 확인할 수 있을 것이다.
1 2 3 4 5 6 7 8 9 |
import lombok.Data; import lombok.Setter; import lombok.EqualsAndHashCode;
@Data public class LombokSampel { private Integer id; private String name; } |
위 두 샘플 코드를 통해 확인했듯이 Lombok을 사용한 코드가 매우 짧아졌다. 필요한 곳에 적당한 Lombok
Annotation만 붙여 주기만 하면 끝이다. Annotation도 문자 그대로 이해할 수 있을 정도로 매우 직관적이다. @Getter
는 getter() 함수를, @Setter
는 setter() 함수를 생성하고 @EqualsAndHashCode
는 equals() 함수와 hashCode() 함수를 자동으로 생성해준다.
그럼 Lombok에서 제공해주는 Annotation이 무엇이 있는지 알아보자.
'IT > Lombok' 카테고리의 다른 글
Lombok Annotation (0) | 2017.01.10 |
---|