Project Lombok
Lombok 은 Java 기반에서 기계적으로 작성하는 VO 관련 작업을 보다 쉽게 하게 해주는 도구이다. Lombok 을 통해 VO 의 멤버에 대한 Getter, Setter, ToString, hashCode 에 대한 메서드 작업을 어노테이션을 통해 깔끔하게 작성할 수 있는 장점이 있다.
Lombok 설치 (Dependency 추가)
Spring Boot 의 경우, 공식적으로 지원하는 라이브러리이기에 https://start.spring.io 를 통해 프로젝트를 생성할 시 해당 옵션을 선택하는 것으로 프로젝트에 Dependency를 포함시킬 수 있다.
하지만 그렇지 않은 프로젝트의 경우는 수동으로 Dependency 를 추가해야 한다. 해당 프로젝트의 pom.xml 에 아래의 Dependency 를 추가하자.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Lombok 설치 (Lombok 프로그램 설치 및 IDE 연동)
Dependency 가 추가되었다면, 하기 경로의 Local Repository 로 이동하여 Lombok 의 jar 파일을 찾는다.
cd C:\Users\{User}\.m2\repository\org\projectlombok\lombok\{Version}\
상기 경로의 jar 파일을 실행하는 것으로 Lombok 을 설치할 수 있다.
java -jar lombok-{Version}.jar
설치 UI 를 따라 설치하되, 설치 이전에 IDE 는 종료되어 있어야 하며, 해당 IDE 의 실행파일을 지정해 주어야 연동 작업이 진행된다.
Eclipse 의 경우, 설치가 완료된 후 eclipse.ini 에 해당 옵션이 추가 되었는지 확인한다.
-vmargs
-javaagent:lombok.jar
이로써 모든 설치가 완료 되었으며, IDE 재시작 및 적용하고자 하는 프로젝트의 빌드를 진행하면 사용할 준비가 완료된다.
Before Lombok
public class UserVO {
private String id;
private String nm;
private int age;
public String getId() {
return id;
}
public String getNm() {
return nm;
}
public int getAge() {
return age;
}
public void setId(id) {
this.id = id;
}
public void setNm(nm) {
this.nm = nm;
}
public void setAge(age){
this.age = age;
}
@Override
public String toString() {
return "UserVO [id=" + id + ", nm=" + nm + ", age=" + age + "]";
}
}
VO 의 각 멤버에 대한 Getter, Setter, ToString 메서드는 각 IDE 기능을 통해 손쉽게 추가할 수 있긴 하다.
하지만 멤버의 수정이 있을 경우, 그에 대한 메서드까지 전부 수정해야 한다는 번거로움이 있을 뿐더러, 일정한 규칙으로 작용하는 메서드가 불필요하게 소스에 나열되어 있기에 가독성을 해치기도 한다.
After Lombok
import lombok.*;
// @Data -> 모든 어노테이션 적용
@Getter
@Setter
@ToString
public class UserVO {
private String id;
private String nm;
private int age;
}
lombok 은 라이브러리에서 제공하는 어노테이션을 적용하는 것으로 멤버에 필요한 메서드를 직접 생성해주는 강력한 기능을 가지고 있다.
각 메서드별로 어노테이션이 나뉘어 있으나, lombok 에서 제공하는 모든 기능을 사용하려면 @Data 어노테이션을 적용하는 것으로 한방에 해결이 가능하다. (하지만 무분별한 @Data 어노테이션의 남용은 의도하지 않은 메서드까지 추가/수정 되어 기능 장애를 일으킬 수도 있으니 신중하게 사용해야 할 것이다)