Files
java-examples/docs/Lombok.md

190 lines
5.2 KiB
Markdown

# **Lombok 어노테이션 정리 및 예제**
## **1. Lombok이란?**
Lombok은 **자바에서 반복적인 코드 작성을 줄여주는 라이브러리**이다.
특히, **Getter, Setter, 생성자, toString, equals, hashCode** 등의 메서드를 **자동으로 생성**해준다.
**✅ Lombok을 사용하면 다음과 같은 장점이 있다.**
**코드가 간결해짐** (Getter, Setter, 생성자 등의 반복 코드 제거)
**가독성이 향상됨** (핵심 로직만 보이므로 더 쉽게 이해 가능)
**컴파일 타임에 코드가 자동 생성됨** (성능 저하 없음)
---
## **2. Lombok 주요 어노테이션 정리**
### **📌 클래스 관련 어노테이션**
| 어노테이션 | 설명 |
|---|---|
| `@Getter` | 모든 필드의 Getter 메서드 생성 |
| `@Setter` | 모든 필드의 Setter 메서드 생성 |
| `@ToString` | `toString()` 메서드 자동 생성 |
| `@EqualsAndHashCode` | `equals()``hashCode()` 자동 생성 |
| `@NoArgsConstructor` | 기본 생성자 자동 생성 |
| `@AllArgsConstructor` | 모든 필드를 포함한 생성자 자동 생성 |
| `@RequiredArgsConstructor` | `final` 또는 `@NonNull` 필드만 포함하는 생성자 생성 |
---
### **📌 필드 관련 어노테이션**
| 어노테이션 | 설명 |
|---|---|
| `@NonNull` | 필드가 `null`이 될 수 없도록 설정 (생성자에서 `null` 체크) |
| `@Value` | 불변(immutable) 클래스를 만들 때 사용 (`@Getter`, `@AllArgsConstructor`, `final` 자동 적용) |
---
### **📌 빌더 패턴 관련 어노테이션**
| 어노테이션 | 설명 |
|---|---|
| `@Builder` | 빌더 패턴을 자동 생성 |
| `@Singular` | `@Builder`에서 컬렉션(List, Set 등)을 초기화할 때 사용 |
---
### **📌 로깅 관련 어노테이션**
| 어노테이션 | 설명 |
|---|---|
| `@Slf4j` | `org.slf4j.Logger`를 자동 생성 |
| `@Log` | `java.util.logging.Logger`를 자동 생성 |
---
## **3. Lombok 어노테이션 예제**
### **✔ 1) Getter, Setter 자동 생성**
```java
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String name;
private int age;
}
```
**🔹 사용 예시**
```java
User user = new User();
user.setName("홍길동");
user.setAge(30);
System.out.println(user.getName()); // 출력: 홍길동
```
`getName()`, `setName()`, `getAge()`, `setAge()` 메서드가 자동 생성됨!
---
### **✔ 2) `@ToString` 자동 생성**
```java
import lombok.ToString;
@ToString
public class User {
private String name;
private int age;
}
```
**🔹 사용 예시**
```java
User user = new User();
user.setName("홍길동");
user.setAge(30);
System.out.println(user); // 출력: User(name=홍길동, age=30)
```
`toString()`을 직접 작성할 필요 없음!
---
### **✔ 3) `@NoArgsConstructor`, `@AllArgsConstructor` 자동 생성**
```java
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}
```
**🔹 사용 예시**
```java
User user1 = new User(); // 기본 생성자 사용
User user2 = new User("홍길동", 30); // 모든 필드를 받는 생성자 사용
```
**기본 생성자와 모든 필드를 포함한 생성자가 자동 생성됨!**
---
### **✔ 4) `@RequiredArgsConstructor` 사용 (final 필드만 포함)**
```java
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class User {
private final String name;
private int age;
}
```
**🔹 사용 예시**
```java
User user = new User("홍길동"); // name 필드만 포함된 생성자
```
**`final` 필드만 포함하는 생성자가 자동 생성됨!**
---
### **✔ 5) `@Builder`를 이용한 빌더 패턴**
```java
import lombok.Builder;
@Builder
public class User {
private String name;
private int age;
}
```
**🔹 사용 예시**
```java
User user = User.builder()
.name("홍길동")
.age(30)
.build();
System.out.println(user);
```
**빌더 패턴이 자동 생성되어 `User.builder().name("홍길동").age(30).build();`로 객체 생성 가능!**
---
### **✔ 6) `@Slf4j`를 이용한 로그 출력**
```java
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogExample {
public static void main(String[] args) {
log.info("Hello, Lombok!");
}
}
```
**🔹 실행 결과**
```
INFO - Hello, Lombok!
```
**Logger 객체를 직접 생성할 필요 없이 `log.info("Hello, Lombok!")`처럼 바로 사용 가능!**
---
## **4. Lombok 정리**
**Lombok은 자바에서 반복적인 코드 작성을 줄여주는 라이브러리**
**Getter, Setter, 생성자, toString, equals, hashCode 등을 자동 생성**
**빌더 패턴 및 로깅도 쉽게 적용 가능**
**코드를 간결하게 만들고 가독성을 향상시킴**
**IDE에서 Lombok을 사용하려면?**
- **Lombok 라이브러리를 추가** (`pom.xml` 또는 `build.gradle`)
- **IntelliJ → Plugins에서 Lombok 플러그인 설치**
- **설정에서 "Enable annotation processing" 활성화** (`Settings > Build, Execution, Deployment > Compiler > Annotation Processors`)
✅ **Lombok을 사용하면 코드가 간결해지고, 유지보수가 편리해짐!**