💡 개발을 하다 보면 기계적으로 작성해야 하는 코드들이 상당히 많다. 이번에는 기계적인 코드 작성을 자동화하여 코드 다이어트를 해주는 Java 필수 라이브러리 Lombok에 대해 정리해 보았다.
📌 롬복(Lombok)이란?
- Lombok은 자바 개발을 더욱 편리하게 만들어주는 라이브러리입니다. 반복적이고 번거로운 코드를 줄여주고, 표준적인 메서드와 필드를 자동으로 생성하여 개발자들이 더 간결하고 가독성 있는 코드를 작성할 수 있도록 도와줍니다.
📌 롬복 어노테이션(Annotaion)과 기능
- Lombok은 다양한 어노테이션을 제공하여 코드 작성을 간소화하고 필요한 메서드와 생성자를 자동으로 생성합니다. 일부 주요한 어노테이션과 그 기능은 다음과 같다.
- @Getter와 @Setter: 필드에 대한 getter와 setter 메서드를 자동으로 생성한다.
- @ToString: 클래스의 toString() 메서드를 자동으로 생성한다.
- @EqualsAndHashCode: equals()와 hashCode() 메서드를 자동으로 생성한다.
- @NoArgsConstructor: 파라미터가 없는 기본 생성자를 자동으로 생성한다.
- @AllArgsConstructor: 모든 필드를 포함하는 생성자를 자동으로 생성한다.
- @Data: @Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor 어노테이션을 한 번에 적용한다.
- @Builder: 빌더 패턴을 사용하여 객체를 생성하는 빌더 클래스를 자동으로 생성한다.
- @Value: 변경 불가능한 (immutable) 클래스를 생성하고 @Getter 메서드를 생성한다.
- @NonNull: 필드에 null이 아닌 값이 들어가야 함을 명시한다.
- @Cleanup: 자동으로 리소스를 해제하는 try-with-resources 패턴을 적용한다.
- @SneakyThrows: 예외를 런타임 예외로 변환하여 예외 처리를 간소화한다.
- @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 |