Spring Legacy 전자도서관 프로젝트(BookRentalPjt)를 진행하면서 DTO에 반복적으로 작성되는 Getter, Setter, 생성자 코드를 줄이기 위해 Lombok을 설치하고 Maven 의존성을 추가한 과정을 정리했습니다.
1. Lombok이란?
Lombok은 Java 클래스에서 반복적으로 작성하는 Getter, Setter, 생성자, toString 등의 코드를 어노테이션으로 자동 생성할 수 있게 해주는 라이브러리입니다.
기존 방식
DTO 필드 선언
→ Getter 작성
→ Setter 작성
→ 생성자 작성
→ toString 작성
Lombok 사용
DTO 필드 선언
→ 필요한 어노테이션 추가
2. Lombok Installer 실행
Lombok Installer를 실행했습니다. 이번에 사용한 Installer 화면에는 Project Lombok v1.18.48이 표시되어 있었습니다.
3. Can't find IDE 메시지 발생
Installer 실행 후 아래처럼 Can't find IDE 메시지가 나타났습니다. Lombok이 현재 PC의 STS 설치 위치를 자동으로 찾지 못한 상태입니다.

4. Specify location으로 STS 위치 지정
Lombok Installer 화면에서 Specify location... 버튼을 클릭합니다.

5. STS.exe 선택
사용 중인 STS 설치 폴더로 이동한 뒤 STS.exe를 선택합니다. 이번 실습에서는 sts-3.9.18.RELEASE 폴더를 사용했습니다.

STS 설치 폴더
└─ sts-3.9.18.RELEASE
├─ configuration
├─ features
├─ plugins
├─ eclipse.exe
├─ STS.exe ← 선택
└─ STS.ini
6. Install / Update 실행
STS.exe를 지정하면 Installer의 IDE 목록에 STS 경로가 나타납니다. 경로와 체크 상태를 확인한 뒤 Install / Update를 클릭합니다.

7. Lombok 설치 완료
설치가 정상적으로 끝나면 Install successful 화면이 나타납니다.

pom.xml 설정도 진행합니다.8. BookRentalPjt의 pom.xml 열기
BookRentalPjt 프로젝트의 pom.xml을 열고 </dependencies>가 끝나기 전 위치에 Lombok dependency를 추가합니다. 라이브러리 구분을 위해 <!-- LOMBOK --> 주석도 작성했습니다.

9. MVN Repository에서 Lombok 검색
MVN Repository에서 Lombok을 검색한 뒤 org.projectlombok » lombok 항목을 선택합니다.

10. Lombok 버전 확인
Lombok 페이지에서 사용할 수 있는 1.18.x 버전 목록을 확인했습니다. 실습 당시 Repository 화면에서는 1.18.46 등의 버전이 보였습니다.

11. Maven dependency 코드 확인
버전을 선택하면 Maven 탭에서 <dependency> 코드를 확인할 수 있습니다. 이 코드를 참고하여 프로젝트의 pom.xml에 추가합니다.

12. pom.xml에 Lombok dependency 적용
BookRentalPjt에는 최종적으로 아래와 같이 Lombok 1.18.24와 provided scope를 적용했습니다.

<!-- LOMBOK -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
provided는 무엇인가?
provided는 컴파일 시에는 해당 라이브러리를 사용할 수 있지만, 실행 환경에서 항상 라이브러리를 패키징할 필요는 없다는 의미로 사용할 수 있습니다. Lombok은 소스 코드를 컴파일하는 과정에서 필요한 코드를 생성하는 용도로 사용되기 때문에 프로젝트 설정에 따라 provided로 두기도 합니다.
13. Lombok 어노테이션 적용
설치와 Maven 설정을 마친 뒤 DTO 클래스에서 Lombok 어노테이션을 적용했습니다.

// @Getter
// @Setter
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
이번 코드에서는 @Getter와 @Setter를 별도로 사용하지 않고 주석 처리했습니다. @Data에 Getter와 Setter 생성 기능이 포함되어 있기 때문입니다.
14. 주요 Lombok 어노테이션 정리
@Getter
필드의 Getter 메서드를 자동으로 생성합니다.
@Setter
필드의 Setter 메서드를 자동으로 생성합니다.
@Data
Getter, Setter, toString, equals/hashCode 등 DTO에서 자주 사용하는 기능을 묶어서 제공합니다. 따라서 이번 실습처럼 @Data를 사용하면 @Getter와 @Setter를 따로 작성하지 않아도 됩니다.
@NoArgsConstructor
매개변수가 없는 기본 생성자를 자동으로 생성합니다.
public BookDto() {
}
@AllArgsConstructor
클래스의 모든 필드를 매개변수로 받는 생성자를 자동으로 생성합니다.
@Builder
Builder Pattern을 이용해 객체를 생성할 수 있도록 해줍니다. 필드 이름을 확인하면서 값을 넣을 수 있어 생성자의 매개변수 순서에 덜 의존하게 됩니다.
BookDto bookDto = BookDto.builder()
.b_name("자바의 정석")
.b_author("남궁성")
.build();
15. Lombok 적용 전과 후
Lombok을 사용하지 않는 경우
public class BookDto {
private String b_name;
private String b_author;
public String getB_name() {
return b_name;
}
public void setB_name(String b_name) {
this.b_name = b_name;
}
public String getB_author() {
return b_author;
}
public void setB_author(String b_author) {
this.b_author = b_author;
}
}
Lombok을 사용하는 경우
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BookDto {
private String b_name;
private String b_author;
}
전체 과정 한눈에 보기
핵심 개념 정리
Lombok
├── @Getter
│ └── Getter 자동 생성
│
├── @Setter
│ └── Setter 자동 생성
│
├── @Data
│ ├── Getter
│ ├── Setter
│ ├── toString
│ └── equals / hashCode 등
│
├── @NoArgsConstructor
│ └── 기본 생성자 자동 생성
│
├── @AllArgsConstructor
│ └── 모든 필드를 받는 생성자 자동 생성
│
└── @Builder
└── Builder Pattern으로 객체 생성
마무리
이번 실습에서는 STS3에 Lombok을 설치한 뒤 BookRentalPjt의 Maven 설정에 Lombok dependency를 추가하고, DTO 클래스에 여러 Lombok 어노테이션을 적용했습니다.
Lombok은 단순히 코드를 짧게 만드는 것뿐 아니라 DTO처럼 반복 코드가 많은 클래스의 가독성을 높이고 유지보수를 편하게 해주는 역할을 합니다.