Lombok

2023. 4. 27. 17:42Spring Boot

Lombok

롬복 (Lombok)은 자바 (Java) 프로그래밍 언어를 사용하는 개발자들을 위한 플러그인 라이브러리입니다. 롬복은 반복적이고 장황한 코드를 줄여주고, 자동으로 코드를 생성하여 개발자의 생산성을 향상시켜주는 데 도움을 줍니다. 롬복은 Java 언어의 불필요한 보일러플레이트 코드를 최소화하고, 코드를 간결하게 작성할 수 있게 해줍니다.

다음은 롬복의 주요 기능과 개념에 대한 상세 설명입니다:

  1. 애노테이션 (Annotations): 롬복은 Java 애노테이션을 사용하여 코드를 자동으로 생성하거나 수정합니다. 롬복 애노테이션은 개발자가 작성한 클래스나 메서드에 적용됩니다.
  2. Getter 및 Setter 메서드 생성: 롬복을 사용하면 클래스의 필드에 대한 Getter와 Setter 메서드를 자동으로 생성할 수 있습니다. 이로써 데이터를 캡슐화하고 외부에서 접근 및 수정할 수 있습니다.
  3. 생성자 자동 생성: 롬복을 사용하면 생성자를 자동으로 생성할 수 있으며, 이를 통해 객체를 초기화할 때 필드를 간편하게 설정할 수 있습니다.
  4. Equals와 HashCode 메서드 생성: 롬복은 객체 비교를 위한 equals()와 hashCode() 메서드를 자동으로 생성해줍니다. 이를 통해 객체의 동등성을 비교하는 데 용이합니다.
  5. toString 메서드 생성: 롬복을 사용하면 객체의 내용을 출력하는 toString() 메서드를 간단하게 생성할 수 있습니다.
  6. 데이터 클래스: 롬복은 자바의 데이터 클래스를 쉽게 정의할 수 있도록 도와줍니다. 데이터 클래스는 필드와 관련된 모든 메서드를 자동으로 생성하며, 불변성을 유지하는 데 도움을 줍니다.

롬복은 코드를 간결하게 유지하고 개발자의 노력을 줄여주는데 도움을 주는 유용한 도구 중 하나입니다. 그러나 롬복을 사용할 때 주의해야 할 점은 롬복 애노테이션을 사용하면 코드의 가독성이 저하될 수 있으며, 일부 개발 도구와 통합에 문제가 있을 수 있습니다. 또한 롬복을 사용하기 전에 프로젝트의 요구사항과 정책을 고려해야 합니다.

 

롬복은 다양한 어노테이션을 제공하여 자바 클래스를 간결하게 작성할 수 있도록 도와줍니다. 이제 몇 가지 주요 롬복 어노테이션을 사용한 예제 코드를 만들어 설명하겠습니다.


1. @Getter 어노테이션:
   @Getter 어노테이션은 클래스의 필드에 적용하여 해당 필드에 대한 Getter 메서드를 자동으로 생성합니다. Getter 메서드는 해당 필드의 값을 반환하는 역할을 합니다. 롬복은 필드의 이름을 기반으로 Getter 메서드를 생성하므로 필드 이름이 name인 경우 getName() 메서드가 생성됩니다.

   예제 코드:

import lombok.Getter;
   
@Getter
public class Person {
   
   private String name;
   private int age;
}


  위의 코드에서 @Getter 어노테이션이 name 필드에 적용되었으므로 getName() 메서드가 자동으로 생성됩니다.

2. @Setter 어노테이션:
   @Setter 어노테이션은 클래스의 필드에 적용하여 해당 필드에 대한 Setter 메서드를 자동으로 생성합니다. Setter 메서드는 해당 필드의 값을 설정하는 역할을 합니다. 롬복은 필드의 이름을 기반으로 Setter 메서드를 생성하므로 필드 이름이 age인 경우 setAge() 메서드가 생성됩니다.

   예제 코드:

 import lombok.Setter;
   
public class Person {
   private String name;
   @Setter
   private int age;
}

   

위의 코드에서 @Setter 어노테이션이 age 필드에 적용되었으므로 setAge() 메서드가 자동으로 생성됩니다.

@Getter와 @Setter 어노테이션을 사용하면 Getter와 Setter 메서드를 직접 작성할 필요가 없어지므로 코드를 간결하게 유지할 수 있습니다. 이러한 어노테이션을 활용하면 객체의 필드에 안전하게 접근하고 수정할 수 있으며, 자바 빈(Java Bean) 규약을 따르는 코드를 작성하는 데 도움이 됩니다.

3. @Data 어노테이션:
   @Data 어노테이션은 Getter, Setter, Equals, HashCode, ToString 메서드를 자동으로 생성합니다.

import lombok.Data;

@Data
public class Person {
    private String name;
    private int age;
}

// 사용 예제
public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("Alice");
        person.setAge(30);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
        System.out.println("ToString: " + person.toString());
    }
}



4. @NoArgsConstructor 어노테이션:
   @NoArgsConstructor 어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성합니다.

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Book {
    private String title;
    private String author;
}

// 사용 예제
public class Main {
    public static void main(String[] args) {
        Book book = new Book();
        System.out.println("Book: " + book.toString());
    }
}


5. @AllArgsConstructor 어노테이션:
   @AllArgsConstructor 어노테이션은 모든 필드를 파라미터로 전달 받는 생성자를 자동으로 생성합니다.

import lombok.AllArgsConstructor;

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

// 사용 예제
public class Main {
    public static void main(String[] args) {
        Student student = new Student("Bob", 25);
        System.out.println("Name: " + student.getName());
        System.out.println("Age: " + student.getAge());
    }
}


6. @Builder 어노테이션:
   @Builder 어노테이션은 빌더 패턴을 자동으로 생성합니다.

import lombok.Builder;

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

// 사용 예제
public class Main {
    public static void main(String[] args) {
        Product product = Product.builder()
            .name("Laptop")
            .price(1000.0)
            .build();

        System.out.println("Product: " + product.toString());
    }
}

 


이러한 롬복 어노테이션을 사용하면 반복적인 코드를 줄이고 더 간결한 자바 클래스를 작성할 수 있습니다. 롬복은 코드 작성 시간을 절약하고 가독성을 향상시키는데 도움이 되며, 객체지향 프로그래밍 원칙을 준수하는 클래스를 생성하는 데 도움을 줍니다.

 

아래의 예제는 간단한 자바 클래스를 만들고 롬복을 이용하여 Getter, Setter, 생성자, Equals, HashCode, ToString 등을 자동으로 생성하는 방법을 보여줍니다.

먼저 롬복 라이브러리를 프로젝트에 추가하고 롬복 애노테이션을 사용하여 클래스를 작성합니다.

import lombok.Data;

@Data
public class Person {
    private String name;
    private int age;
}


이 코드에서는 @Data 애노테이션을 사용하여 롬복에게 다음과 같은 작업을 수행하도록 지시합니다:

1. 필드 name과 age에 대한 Getter 메서드를 생성합니다.
2. 필드 name과 age에 대한 Setter 메서드를 생성합니다.
3. 파라미터를 전달받는 생성자를 생성합니다.
4. equals() 및 hashCode() 메서드를 생성합니다.
5. toString() 메서드를 생성합니다.

 

이제 이 클래스를 사용하여 객체를 생성하고 기능을 확인해보겠습니다.

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("Alice");
        person.setAge(30);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());

        // Equals 메서드
        Person anotherPerson = new Person();
        anotherPerson.setName("Alice");
        anotherPerson.setAge(30);

        System.out.println("Equals: " + person.equals(anotherPerson));

        // ToString 메서드
        System.out.println("ToString: " + person.toString());
    }
}


위의 코드를 실행하면 롬복이 생성한 Getter, Setter, Equals, HashCode 및 ToString 메서드를 확인할 수 있습니다. 롬복을 사용하면 이러한 기능을 수동으로 작성하지 않아도 되므로 코드를 간결하게 유지할 수 있습니다.

주의할 점은 롬복을 사용하기 위해 라이브러리를 프로젝트에 추가해야 한다는 것이며, 롬복 애노테이션을 사용한 클래스를 컴파일하려면 롬복을 지원하는 IDE 또는 빌드 도구가 필요합니다.

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>compile</scope>
</dependency>

 

// https://mvnrepository.com/artifact/org.projectlombok/lombok
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.30'

'Spring Boot' 카테고리의 다른 글

Spring Initializr(spring-boot-starter-parent)  (0) 2023.08.04
ZooKeeper  (0) 2023.06.04
SLF4J  (0) 2023.04.17
@Autowired  (0) 2023.04.17
Spring Boot DevTools  (0) 2023.04.17