# **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을 사용하면 코드가 간결해지고, 유지보수가 편리해짐!**