JAVA
[Java] Lombok 라이브러리
kimyongjun0129
2025. 5. 10. 13:25
목차
Lombok 정의
Java 개발에서 보일러 플레이트 코드를 줄여주는 라이브러리입니다.
더보기
❗보일러 플레이트 코드란
: 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 사용되는 표준화된 코드를 말합니다.
Lombok 특징
- `어노테이션 기반`으로 동작
- 코드 간결성
- 유지보수 편의성 향상
- 프로젝트 빌드 시 자동으로 필요한 메서드가 생성
Lombok 작동 방식
컴파일 타임에 주어진 어노테이션을 바탕으로 필요한 코드를 자동으로 생성합니다.
대표적인 Lombok 어노테이션
어노테이션 | 설명 |
`@Getter` | 모든 필드에 대해 getter 메서드 생성 |
`@Setter` | 모든 필드에 대해 setter 메서드 생성 |
`@ToString` | `toString()` 메서드 자동 생성 |
`@EqualsAndHashCode` | `equals()`와 `hashCode()` 메서드 생성 |
`@NoArgsConstructor` | 파라미터가 없는 기본 생성자 생성 |
`@AllArgsConstructor` | 모든 필드를 파라미커로 받는 생성자 생성 |
`@RequiredArgsConstructor` | `final`이나 `@NonNull` 필드만 파라미터로 받는 생성자 생성 |
`@Data` | `@Getter`, `@Setter`, `@ToString`, `@EqualsAndHashCode`, `@RequiredArgsConstructor` 를 한 번에 적용 |
`@Builder` | 빌더 패턴 구현 (체이닝 방식 객체 생성) |
`@Slf4j` | `log.info()`, `log.error()` 등을 사용할 수 있는 로거 자동 생성 |
주요 Lombok Annotation 예시
1. `@Getter`, `@Setter` : 클래스의 모든 필드에 대한 getter와 setter 메서드를 자동으로 생성합니다.
더보기

결과
User
@Setter
@Getter
public class User {
private String name;
private int old;
}
Main
public class Main {
public static void main(String[] args) {
User user = new User();
user.setName("철수");
user.setOld(20);
System.out.println("이름: " + user.getName());
System.out.println("나이: " + user.getOld());
}
}
setter, getter를 넣지 않아도 어노테이션을 통해 `getName()`, `getOld()`, `setName`, `setOld`이 자동으로 생성됩니다.

2. `@ToString` : 객체의 `toString()` 메서드를 자동으로 생성합니다
더보기

결과
User
@ToString
public class User {
private String name="철수";
private int old=20;
}
`toString()` 메서드는 객체 정보를 String으로 변환해주는 역할을 수행합니다.
Main
public class Main {
public static void main(String[] args) {
User user = new User();
System.out.println("user = " + user);
}
}

3. `@NoArgsConstructor` : 기본 생성자를 생성합니다.
더보기
User
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class User {
private String name;
private int old;
public User(String name, int old) {
this.name = name;
this.old = old;
}
}
- 이미 생성자가 정의되어 기본 생성자를 생성하지 못할 때 사용 ✅
Main
public class Main {
public static void main(String[] args) {
User user = new User();
}
}
- User Class에서 `@NoArgsConstructor`를 통해 기본 생성자도 생성하여, 컴파일 오류가 생기지 ❌
4. `@AllArgsConstructor` : 모든 필드를 매개변수로 하는 생성자를 생성합니다.
더보기
User
@AllArgsConstructor
public class User {
private String name;
private int old;
}
- 모든 필드를 초기화하는 생성자를 생성해줍니다.
Main
public class Main {
public static void main(String[] args) {
User user = new User("철수", 20);
}
}
- 객체 생성 시, 파라미터를 넘겨주지 않으면 컴파일 오류 발생
5. `@RequiredArgsConstructor` : 필수(final) 필드만을 매개변수로 하는 생성자를 자동으로 생성합니다.
더보기
User
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class User {
private final String name;
private int old;
}
- final 필드인 name만 받는 생성자를 생성합니다.
Main
public class Main {
public static void main(String[] args) {
User user = new User("철수");
}
}
- final로 설정된 필드 name에 한해서만 파라미터를 넘겨줘야 컴파일 오류가 발생하지 않습니다.
결론
Lombok 라이브러리가 없던 때로 돌아갈 순 없을 거같다.
- 반복적인 코드를 쓰지 않아도 되서 좋다.
- 어노테이션만 봐도 뭘 의미하는지 바로 알 수 있다. (명시적)
- 여러 개의 어노테이션을 복합적으로 사용할 수 있다.