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