본문 바로가기

Spring

[Java] 롬복(Lombok) 설명 & 정리

💡 개발을 하다 보면 기계적으로 작성해야 하는 코드들이 상당히 많다. 이번에는 기계적인 코드 작성을 자동화하여 코드 다이어트를 해주는 Java 필수 라이브러리 Lombok에 대해 정리해 보았다.

📌 롬복(Lombok)이란?

  • Lombok은 자바 개발을 더욱 편리하게 만들어주는 라이브러리입니다. 반복적이고 번거로운 코드를 줄여주고, 표준적인 메서드와 필드를 자동으로 생성하여 개발자들이 더 간결하고 가독성 있는 코드를 작성할 수 있도록 도와줍니다.

📌 롬복 어노테이션(Annotaion)과 기능

  • Lombok은 다양한 어노테이션을 제공하여 코드 작성을 간소화하고 필요한 메서드와 생성자를 자동으로 생성합니다. 일부 주요한 어노테이션과 그 기능은 다음과 같다.
  1. @Getter와 @Setter: 필드에 대한 getter와 setter 메서드를 자동으로 생성한다.
  2. @ToString: 클래스의 toString() 메서드를 자동으로 생성한다.
  3. @EqualsAndHashCode: equals()와 hashCode() 메서드를 자동으로 생성한다.
  4. @NoArgsConstructor: 파라미터가 없는 기본 생성자를 자동으로 생성한다.
  5. @AllArgsConstructor: 모든 필드를 포함하는 생성자를 자동으로 생성한다.
  6. @Data: @Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor 어노테이션을 한 번에 적용한다.
  7. @Builder: 빌더 패턴을 사용하여 객체를 생성하는 빌더 클래스를 자동으로 생성한다.
  8. @Value: 변경 불가능한 (immutable) 클래스를 생성하고 @Getter 메서드를 생성한다.
  9. @NonNull: 필드에 null이 아닌 값이 들어가야 함을 명시한다.
  10. @Cleanup: 자동으로 리소스를 해제하는 try-with-resources 패턴을 적용한다.
  11. @SneakyThrows: 예외를 런타임 예외로 변환하여 예외 처리를 간소화한다.
  12. @Slf4j: 로깅을 위한 SLF4j Logger를 자동으로 생성한다.

📌 장단점

Lombok의 사용은 코드 작성을 편리하게 만들어주지만, 몇 가지 장단점을 고려해야 한다.

💡 장점

  • 코드의 반복을 줄여줌으로써 개발자의 생산성을 향상한다.
  • 가독성과 유지보수성이 향상되어 코드의 이해와 유지보수가 쉬워진다.

💡 단점

  • Lombok을 사용하면 컴파일 시점에서 코드를 변경하기 때문에 IDE에서 코드를 분석하기 어려울 수 있다.
  • 프로젝트에 Lombok 의존성이 필요하므로 프로젝트 구성 및 빌드 설정에 주의해야 한다.

📌 일반 코드와 롬복(Lombok) 사용 예시

  • 일반적인 코드와 Lombok을 사용한 코드의 비교를 통해 Lombok의 편리함을 알아보겠습니다.

🔍 일반적인 코드:

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

    public Person(String name, int age) {
        this.name = name;
        this.age = 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;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person other = (Person) obj;
        return age == other.age && Objects.equals(name, other.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

🔍 Lombok 사용 코드:

import lombok.Data;

@Getter
@Setter
@AllArgsConstructor
@ToString
@hashCode
public class Person {
    private String name;
    private int age;
}
  • 위의 코드를 비교해 보면, Lombok을 사용한 코드는 Getter, Setter, equals(), hashCode(), toString(), 생성자 등의 어노테이션을 추가하면 반복적인 코드를 자동으로 생성해 주기 때문에 코드가 훨씬 간결하고 가독성이 좋아집니다.
  • Lombok은 이처럼 코드 작성을 편리하게 만들어주며, 개발자들이 더 효율적으로 개발할 수 있도록 도와준다.

'Spring' 카테고리의 다른 글

[Spring] Gradle 과 Maven  (0) 2022.07.15
[Spring] IoC 컨테이너 ? @Bean ? 스프링 빈 ?  (0) 2022.06.24
[Spring] Spring Boot 란 ?  (0) 2022.06.24
[Spring] Spring? SpringFramework?  (0) 2022.05.26