웹/Spring

Spring 프로젝트에 Lombok 추가하기

Themion 2022. 4. 9. 16:17

Spring뿐 아니라 여러 Java 프로젝트를 다루다 보면, 기본적인 생성자와 getter / setter, builder 등을 만들기 위해 시간을 낭비해야 하는 경우가 있다. 물론 VS Code 혹은 IntelliJ와 같은 편집기를 이용하면 해당 메소드를 빠르게 추가할 수도 있지만, Lombok이라는 라이브러리를 이용하면 이러한 기본 메소드를 따로 추가할 필요 없이 Annotation만으로도 빠르게 추가할 수 있다.

1. VS Code에 Lombok Annotations Support 확장 추가

Lombok은 Oracle 혹은 Microsoft에서 개발한 것이 아닌 서드 파티 라이브러리이기 때문에, 우선 VS Code에 Lombok이 어떤 라이브러리인지 알려주어야 한다. VS Code의 확장에서 Lombok을 검색한 뒤 설치하면 된다.

 

2. Spring 프로젝트에 Lombok dependency 추가

Spring은 프로젝트의 dependency를 Maven 혹은 Gradle로 관리할 수 있다. 프로젝트를 생성할 때 Lombok을 추가하고 싶다면 Spring Initializr에서 Lombok을 검색해 추가할 수 있고, 프로젝트 도중에 추가하고 싶다면 dependency에 Lombok을 가져오는 코드를 넣어주면 된다.

build.gradle의 dependencies에 선택된 코드를 넣어주면 된다.

위 두 과정을 거치면 이제 Spring 프로젝트에서 Lombok을 사용할 수 있다.

 

3. 자주 사용하는 기능

Lombok은 Java를 이용해 코드를 작성할 경우 자주 사용하게 되는 생성자와 getter / setter, builder 등을 Compile time에 자동으로 추가해 주는 라이브러리이다. Lombok을 이용하기 위해선 클래스 혹은 멤버 변수에 간단한 Annotation을 붙이면 되는데, 자주 사용하게 되는 Annotation은 아래와 같다.

  • @NonNull

@NonNull은 메소드의 인자에 사용하는 Annotation인데, 해당 Annotation이 붙은 인자의 값으로 null이 들어올 경우 NullPointerException을 발생시킨다.

setUsername의 인자로 null을 넣으니 NullPointerException이 발생한 모습

  • @AllArgsConstructor
  • @NoArgsConstructor
  • @RequiredArgsConstructor

위 세 Annotation은 멤버 변수에 따라 생성자를 추가해 주는 Annotation이다. 위에서부터 각각 모든 멤버 변수의 값을 입력받는 생성자, 값을 입력받지 않는 생성자, 특정 멤버 변수의 값만 입력받는 생성자인데, 이 때 값을 입력받을 멤버 변수는 해당 멤버 변수에 @NonNull Annotation을 붙여 고를 수 있다.

  • @Data

@Data는 getter / setter, toString 등을 추가하는 역할을 한다. @Data 자체는 @Getter, @Setter, @ToString 등 다른 Lombok Annotation을 여러 개 합쳐 만든 것이므로, @Data의 특정 기능만 필요하다면 해당 Annotation만을 사용할 수도 있다.

  • @Builder

@Builder는 클래스 빌더를 생성하는 Annotation이다. 빌더 자체는 클래스의 static 메소드 .builder()를 호출해 생성 가능하고, 각 멤버 변수는 해당 멤버 변수의 이름을 가진 빌더의 메소드를 호출해 초기화 가능하다. 모든 멤버 변수의 호출이 끝났다면, .build() 메소드를 호출해 빌드가 끝난 객체를 반환받을 수 있다.