본문 바로가기

BUILD · LEARN · RECORD

배운 것을 정리하고,
해결한 문제를 기록합니다.

Java, JavaScript, Python등등 프로젝트 과정에서 얻은 경험을 차분하게 쌓아가는 개발 기록 공간입니다.

ITcodingstudyPROJECT

JavaSpring

[Spring Legacy] STS3에 Lombok 설치하고 Maven 프로젝트에 적용하기

dijk 2026. 9. 4. 17:29

Spring Legacy 전자도서관 프로젝트(BookRentalPjt)를 진행하면서 DTO에 반복적으로 작성되는 Getter, Setter, 생성자 코드를 줄이기 위해 Lombok을 설치하고 Maven 의존성을 추가한 과정을 정리했습니다.

실습 환경
Spring Legacy · STS 3.9.18.RELEASE · Java 11 · Maven · BookRentalPjt · Lombok

1. Lombok이란?

Lombok은 Java 클래스에서 반복적으로 작성하는 Getter, Setter, 생성자, toString 등의 코드를 어노테이션으로 자동 생성할 수 있게 해주는 라이브러리입니다.

기존 방식
DTO 필드 선언
→ Getter 작성
→ Setter 작성
→ 생성자 작성
→ toString 작성


Lombok 사용
DTO 필드 선언
→ 필요한 어노테이션 추가
포인트
Lombok을 사용하면 DTO/VO와 같이 필드가 많은 클래스에서 반복 코드를 크게 줄일 수 있습니다.

2. Lombok Installer 실행

Lombok Installer를 실행했습니다. 이번에 사용한 Installer 화면에는 Project Lombok v1.18.48이 표시되어 있었습니다.

3. Can't find IDE 메시지 발생

Installer 실행 후 아래처럼 Can't find IDE 메시지가 나타났습니다. Lombok이 현재 PC의 STS 설치 위치를 자동으로 찾지 못한 상태입니다.

Lombok Installer에서 IDE를 자동으로 찾지 못한 화면

해결 방법
IDE가 없다는 의미가 아니라 Lombok Installer가 STS의 위치를 자동 탐색하지 못했다는 의미이므로, STS 실행 파일의 위치를 직접 지정하면 됩니다.

4. Specify location으로 STS 위치 지정

Lombok Installer 화면에서 Specify location... 버튼을 클릭합니다.

Specify location 버튼으로 STS 위치를 직접 지정

5. STS.exe 선택

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

STS 3.9.18.RELEASE 폴더에서 STS.exe 선택

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를 클릭합니다.

Lombok Installer에 STS 경로 등록 후 Install / Update

7. Lombok 설치 완료

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

Lombok Install successful 설치 완료 화면

설치 후
STS가 실행 중이었다면 완전히 종료한 뒤 다시 실행합니다. IDE에 Lombok을 설치하는 과정과 프로젝트의 Maven dependency를 추가하는 과정은 별개이므로, 다음으로 pom.xml 설정도 진행합니다.

8. BookRentalPjt의 pom.xml 열기

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

BookRentalPjt pom.xml에 Lombok 의존성을 추가할 위치

9. MVN Repository에서 Lombok 검색

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

MVN Repository에서 Lombok 검색

10. Lombok 버전 확인

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

MVN Repository의 Lombok 버전 목록 확인

이번 프로젝트에서 실제 적용한 버전
Repository에서 버전을 확인한 뒤, BookRentalPjt에는 수업에서 사용하는 설정에 맞춰 1.18.24를 적용했습니다.

11. Maven dependency 코드 확인

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

MVN Repository에서 Maven dependency 코드 확인

12. pom.xml에 Lombok dependency 적용

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

BookRentalPjt pom.xml에 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 어노테이션을 적용했습니다.

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;

}
차이점
반복되는 Getter/Setter/생성자 코드를 줄여 실제 DTO가 어떤 데이터를 가지고 있는지 더 빠르게 확인할 수 있습니다.

전체 과정 한눈에 보기

Lombok Installer 실행
Can't find IDE 발생
Specify location... 클릭
STS 3.9.18.RELEASE의 STS.exe 선택
Install / Update
Install successful 확인
BookRentalPjt의 pom.xml 열기
MVN Repository에서 org.projectlombok:lombok 검색
Lombok dependency 추가
1.18.24 + provided 적용
@Data / @NoArgsConstructor / @AllArgsConstructor / @Builder 적용

핵심 개념 정리

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처럼 반복 코드가 많은 클래스의 가독성을 높이고 유지보수를 편하게 해주는 역할을 합니다.