Lombok

Spring boot 프로젝트에 Lombok 설정 방법

Lombok 이란

Project Lombok은 클래스 자동화 라이브러리이다. 반복적으로 사용하는 코드들을 최소화시켜 가독성과 효율성을 올려준다.

Lombok 의존성 추가

  1. Spring Boot Add Starters에서 추가

  2. Maven Central Repository에서 추가

Spring Boot Add Starters

프로젝트 우클릭 → Spring → Add Staters에서 lombok을 검색하여 추가한다.

다음을 눌러 pom.xml을 선택하고 Finish를 눌러 추가를 마무리한다.

Maven Central Repository

maven central repository에서 lombok을 검색한다.

최신 버전을 찾아 pom.xml에 추가한다. 최신 버전은 검색 시점마다 다를 수 있다.

STS에 Lombok 설치

프로젝트에만 추가하면 import나 annotation 등은 사용할 수 있지만 실제로 에디터에서 인지하지 못하기 때문에 오류가 발생한다. 따라서 STS와 같은 Eclipse에도 적용을 시켜야 완벽하게 사용할 수 있다.

이클립스를 종료한다.

maven으로 다운로드한 lombok jar파일의 위치를 찾는다.

  • [Window] → [Preferences] 선택

  • 검색창에 "maven" 입력 후 [Maven] → [User Settings] 선택

  • Local Repository 란에 있는 저장소 위치 확인

  • 저장소 내에서 /org/projectlombok/lombok 폴더로 이동하여 jar 파일 탐색

탐색한 jar 파일을 실행한다(더블클릭하거나 CMD에서 실행)

CMD에서 실행은 다음과 같이 한다.
$ java -jar "파일전체경로"

실행한 화면에서 [Specify location] 버튼을 눌러 STS 위치를 설정한 뒤 [Install/Update]를 누른다

Windows 사용 시

STS 설치 폴더로 이동하여 STS.exe 파일을 선택한다. (Eclipse의 경우 eclipse.exe)

Mac OS 사용 시

설치파일을 관리자 권한으로 실행한다. 추가 비밀번호 입력이 필요하다.

$ sudo java -jar "lombok jar 파일명"

/Applications/SpringTools4.app/Contents/Eclipse/Eclipse.ini 파일을 선택한다.

설치 완료 화면이 나오면 이클립스를 시작 또는 재시작한다.

주의사항

Eclipse 경로에 한글이 있을 경우 설치 후 이클립스가 실행되지 않는다. 이 경우 이클립스를 다른 곳으로 이동하여 다시 설치한다.

  • PC명이 한글인 경우

  • 바탕 화면, 내 문서 등에 이클립스를 설치한 경우

Lombok 기능 사용

적용이 완료되었다면 기능을 만들어 테스트를 수행해본다.

샘플 클래스 생성

com.hakademy.spring09.entity.PersonDto

@Getter
@Setter
@NoArgsConstructor
@ToString
public class PersonDto {
    private String name;
    private int age;
}

Lombok은 멤버 필드만 존재한다면 나머지 구성 요소들을 Annotation으로 만들도록 지원해준다. 사용된 옵션들은 다음과 같다.

Getter

@Getter를 추가하면 해당하는 영역에 존재하는 필드에 Getter 메소드가 생성된다. 필드마다 사용할 수도 있고, 클래스에 사용할 수도 있다.

Setter

@Setter를 추가하면 해당하는 영역에 존재하는 필드에 Setter 메소드가 생성된다. 필드마다 사용할 수도 있고, 클래스에 사용할 수도 있다.

NoArgsConstructor

클래스에 사용할 수 있으며, 기본 생성자를 만들어준다.

AllArgsConstructor

클래스에 사용할 수 있으며, 모든 필드를 매개변수로 가지는 생성자를 만들어준다.

ToString

객체를 출력했을 때 나오는 toString() 메소드를 필드 값 출력 형태로 재정의한다. exclude 옵션을 사용하여 원하지 않는 항목은 출력되지 않도록 설정할 수 있다.

Data

@Getter, @Setter, @ToString 등은 거의 모든 클래스에 존재하므로 이를 압축하여 @Data라고 부를 수 있다. 따라서 위의 PersonDto는 다음과 같이 만들 수 있다.

@Data
@NoArgsConstructor
public class PersonDto {
    private String name;
    private int age;
}

Builder

빌더 패턴을 사용할 수 있도록 빌더 클래스를 지원하는 Annotation이다. @Builder는 다음과 같은 형태의 객체 생성을 지원한다.

PersonDto personDto = PersonDto.builder().build();

객체에 데이터를 설정하면서 생성하고 싶은 경우 변수명과 동일한 메소드를 builder가 지원한다.

PersonDto personDto = PersonDto.builder.name("test").age(20).build();

한 줄 형태로 작성이 될 수 있기 때문에 코드가 더 간결해지는 효과가 발생한다.

@AllArgsConstructor를 작성하면 기본 생성자가 사라지므로 기본 생성자가 필요하다면 @NoArgsConstructor와 같이 작성해야 한다.

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PersonDto {
    private String name;
    private int age;
}

Last updated