JAVA

[JAVA] Lombok 이란?

인생아 2024. 10. 30. 09:01
반응형

Lombok은 자바 애플리케이션 개발 시 코드의 간결성생산성을 높여주는 Java 라이브러리입니다. 주로 getter, setter, toString, equals 같은 메서드를 자동으로 생성해줘서 불필요한 코드 작성을 줄여주고, 빌더 패턴, 값 객체 생성, 로깅 등의 다양한 기능도 제공해 줍니다. 이를 통해 코드의 가독성이 좋아지고 유지보수성이 향상됩니다.

Lombok 소개

Lombok은 Java 애플리케이션에서 불필요하게 반복되는 코드를 줄이는 것을 목적으로 개발되었습니다. 특히 데이터 중심의 Java 클래스는 필드 선언과 기본적인 메서드들로 인해 코드가 장황해질 수 있습니다. Lombok을 사용하면 이러한 코드를 어노테이션을 통해 간단하게 생성할 수 있습니다.

Lombok을 프로젝트에 적용하려면 build.gradle 또는 pom.xml 파일에 Lombok 의존성을 추가해야 합니다.

build.gradle 예제

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.24'
    annotationProcessor 'org.projectlombok:lombok:1.18.24'
}

pom.xml 예제

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
    <scope>provided</scope>
</dependency>

Lombok의 필요성: 코드 단순화와 유지보수성 향상

Java는 객체 지향 언어로 클래스 내부에서 다양한 getter, setter와 같은 반복적인 코드가 필요합니다. 이러한 코드들은 수동으로 작성할 경우 오타, 실수 등의 가능성이 높아지며, 코드의 길이만 늘어나 가독성이 떨어집니다. Lombok을 사용하면 이러한 반복적인 코드를 자동으로 생성하여 코드를 단순화하고 유지보수성을 크게 향상할 수 있습니다.

예시: Lombok 없이 작성한 Java 클래스

public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

예시: Lombok을 사용한 Java 클래스

import lombok.Getter;
import lombok.Setter;

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

Lombok을 사용하면 @Getter와 @Setter 어노테이션을 통해 자동으로 getter와 setter 메서드가 생성됩니다.

Lombok의 주요 기능과 장점

1. @Getter와 @Setter

이 두 어노테이션은 필드에 대한 getter와 setter 메서드를 자동으로 생성해 줍니다. 이는 필드가 많은 데이터 객체에서 유용하게 사용할 수 있습니다.

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Product {
    private String productName;
    private double price;
}

2. @ToString

클래스의 필드 정보를 문자열로 표현해주는 toString() 메서드를 자동 생성합니다. 이를 통해 객체 정보를 쉽게 확인할 수 있습니다.

import lombok.ToString;

@ToString
public class Product {
    private String productName;
    private double price;
}

3. @EqualsAndHashCode

객체 비교를 위한 equals()와 hashCode() 메서드를 생성합니다. 데이터 무결성을 확인하거나 컬렉션에서 객체를 관리할 때 유용합니다.

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class Product {
    private String productName;
    private double price;
}
반응형

4. @NoArgsConstructor와 @AllArgsConstructor

기본 생성자와 모든 필드를 받는 생성자를 자동 생성합니다. 주로 객체 초기화 시 사용됩니다.

import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
public class Product {
    private String productName;
    private double price;
}

5. @Builder

@Builder 어노테이션은 빌더 패턴을 적용해 객체 생성을 단순화시켜 줍니다. 이를 통해 가독성 높은 객체 생성을 유도할 수 있습니다.

import lombok.Builder;

@Builder
public class Product {
    private String productName;
    private double price;
}

사용 예:

Product product = Product.builder()
                         .productName("Laptop")
                         .price(1500.0)
                         .build();

6. @Data

@Data 어노테이션은 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor가 포함된 어노테이션으로, 한 번에 모든 기능을 제공해 줍니다. 주로 데이터 클래스를 정의할 때 사용합니다.

import lombok.Data;

@Data
public class Product {
    private String productName;
    private double price;
}

7. @Value

@Value 어노테이션은 @Data와 비슷하지만 불변 객체를 생성해 줍니다. 모든 필드는 final로 선언되며, setter 메서드가 생성되지 않습니다.

import lombok.Value;

@Value
public class Product {
    private String productName;
    private double price;
}

8. @Log

Lombok은 여러 로깅 프레임워크와의 통합도 지원합니다. @Log 어노테이션을 통해 간단히 로거 인스턴스를 생성할 수 있습니다.

import lombok.extern.java.Log;

@Log
public class Application {
    public static void main(String[] args) {
        log.info("Application started");
    }
}

Lombok 적용 시 유의사항

  • Lombok은 빌드 도구IDE의 설정이 필요합니다. Eclipse, IntelliJ IDEA와 같은 IDE에서는 Lombok 플러그인을 설치해줘야 합니다.
  • Lombok을 지원하지 않는 환경에서는 컴파일에 오류가 발생할 수 있습니다.

참고사이트

반응형