[SpringBoot] Lombok

김선형·2025년 9월 8일

Java

목록 보기
18/27

개요

개발자의 boilerplate code를 줄이고 가독성을 높일 수 있도록 지원하는 java 라이브러리

✏️ Boilerplate Code
반복적이고 본질적인 로직과 무관하지만 반드시 작성해야 하는 코드
Java에서는 객체의 필드를 다룰 때 getter, setter, 메서드 등이 대표적이다.

주요 Lombok 어노테이션

어노테이션사용 위치역할
@Getter클래스모든 필드에 대해 getter 메서드 자동 생성
@Setter클래스모든 필드에 대해 setter 메서드 자동 생성
@ToString클래스toString() 메서드 자동 생성
@EqualsAndHashCode클래스equals()hashCode() 메서드 자동 생성
@NoArgsConstructor클래스기본 생성자 (파라미터 없는 생성자) 자동 생성
@AllArgsConstructor클래스모든 필드를 파라미터로 받는 생성자 자동 생성
@RequiredArgsConstructor클래스final, @NonNull 필드만을 파라미터로 받는 생성자 자동 생성
@Data클래스@Getter, @Setter, @ToString, @EqualsAndHashCode,
@RequiredArgsConstructor를 한 번에 적용
@Builder클래스, 생성자, 메서드빌더 패턴 자동 생성 (객체 생성 유연화)
@Value클래스모든 필드를 final로 하여 불변 객체 생성,
getter, toString, equals, hashCode 생성, setter 미생성
@Slf4j클래스로그 변수 (log) 자동 생성
(private static final org.slf4j.Logger log
필드 생성)

예시

// Lombok 적용 전
public class User {
    private Long id;
    private String name;

    // 기본 생성자
    public User() {}

    // 모든 필드 초기화 생성자
    public User(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    // Getter & Setter
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    // toString() : 객체 정보를 문자열로 반환
    @Override
    public String toString() {
        return "User{id=" + id + ", name='" + name + "'}";
    }

    // equals() : 두 객체가 같은지 비교 (주로 id와 name이 모두 같을 때)
    // hashCode() : 객체를 해시 기반 컬렉션(Map, Set)에 넣을 때 사용
}
// Lombok 적용 후
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
}
profile
선형의 비선형적 기록 🐜

0개의 댓글