Files
java-examples/docs/Lombok.md

5.2 KiB

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 자동 생성

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
    private String name;
    private int age;
}

🔹 사용 예시

User user = new User();
user.setName("홍길동");
user.setAge(30);
System.out.println(user.getName());  // 출력: 홍길동

getName(), setName(), getAge(), setAge() 메서드가 자동 생성됨!


✔ 2) @ToString 자동 생성

import lombok.ToString;

@ToString
public class User {
    private String name;
    private int age;
}

🔹 사용 예시

User user = new User();
user.setName("홍길동");
user.setAge(30);
System.out.println(user);  // 출력: User(name=홍길동, age=30)

toString()을 직접 작성할 필요 없음!


✔ 3) @NoArgsConstructor, @AllArgsConstructor 자동 생성

import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

🔹 사용 예시

User user1 = new User();  // 기본 생성자 사용
User user2 = new User("홍길동", 30);  // 모든 필드를 받는 생성자 사용

기본 생성자와 모든 필드를 포함한 생성자가 자동 생성됨!


✔ 4) @RequiredArgsConstructor 사용 (final 필드만 포함)

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class User {
    private final String name;
    private int age;
}

🔹 사용 예시

User user = new User("홍길동");  // name 필드만 포함된 생성자

final 필드만 포함하는 생성자가 자동 생성됨!


✔ 5) @Builder를 이용한 빌더 패턴

import lombok.Builder;

@Builder
public class User {
    private String name;
    private int age;
}

🔹 사용 예시

User user = User.builder()
    .name("홍길동")
    .age(30)
    .build();
System.out.println(user);

빌더 패턴이 자동 생성되어 User.builder().name("홍길동").age(30).build();로 객체 생성 가능!


✔ 6) @Slf4j를 이용한 로그 출력

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