Web/Spring
[Spring] lombok이란
땀두
2022. 4. 9. 19:04
Lombok이란
Lombok(롬복)은 Java 라이브러리로 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 라이브러리이다.
보통 Model 클래스나 Entity 같은 도메인 클래스 등 많은 멤버 변수가 있고 getter와 setter, 생성자 등 여러가지를 만드는데 매번 이 작업을 해주다보면 번거롭고, 매우 복잡해진다.
이러한 문제를 쉽게 해결하기 위해 있는 것이 Lombok 라이브러리이다.
Lombok은 여러 Annotation을 제공하고 이를 기반으로 코드를 컴파일과정에서 생성해 주는 방식으로 동작한다. 즉 코딩 과정에서는 lombok과 관련된 어노테이션만 보이고 getter와 setter 메서드 등은 보이지 않지만 실제로 컴파일된 클리스 파일에는 코드가 생성되어 있다는 뜻이다. 이러한 과정 덕분에 Lombok은 반복적인 코드를 줄임으로써 가독성과 생산성을 높힐 수 있다.
하지만 API 설명과 내부 동작을 숙지하지 않고 사용하게 되면 @Data, @ToString Annotation을 사용할 경우 toString()의 경우 순환 참조나 재귀호출 문제로 인하여 StackOverflowError가 발생할수도 있다.
Lombok을 사용한 것과 일반 Java 코드의 차이
Model 클래스를 하나 만들고 그 안에는 id, name이 존재한다고 하면 다음과 같이 작성한다.
public class Model {
private String id;
private String name;
public Model(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
위 코드를 Lombok을 이용한다면 @Getter, @Setter 등의 어노테이션을 이용하여 아래와 같이 사용할 수 있다.
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class CategoryModel {
private String id;
private String name;
}
위의 Annotation 여러 개를 사용하기 싫다면 @Data Annotation 하나만 붙여 사용해도 된다.
Lombok 설치 방법
dependencies {
...
implementation 'org.projectlombok:lombok'
...
}
이후 gradle을 로딩해주고, lombok plugin을 설치해주어야 한다.
내용을 확인해보면 lombok이 intellij 에서 기본으로 설치된 플러그인임을 알 수 있다.
이후 설정 - build, execution, deployment -> compiler -> annotation processor에서 enable annotation processing을 체크해준다.
이는 모든 프로젝트에서 각각 수행해주어야 하기 때문에 설치와 별개로 프로젝트 설정 초기에 매번 해주어야 한다.
참고 : https://dololak.tistory.com/783