롬복 (Lombok)
- 롬복(Lombok)은 Java에서 반복적인 코드를 줄여주는 라이브러리입니다.
- 롬복을 사용하면 Getter, Setter, Constructor, toString, Equals/HashCode 같은 코드를 자동으로 생성해줍니다.
- 이를 통해 코드 작성 시간을 줄이고 가독성을 높일 수 있는 도구입니다.
주요 기능
1. Getter/Setter 자동 생성
- 클래스 필드에 대해 @Getter, @Setter 어노테이션을 사용하면 getter와 setter 메서드가 자동으로 생성됩니다.
2. 생성자 자동 생성
- @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 어노테이션으로 생성자를 자동 생성합니다.
3. toString, Equals, HashCode 자동 생성
- @ToString, @EqualsAndHashCode를 사용해 메서드를 자동으로 생성합니다.
4. 빌더 패턴 지원
- 빌더 패턴
- 객체를 생성할 때 복잡한 생성자 호출을 피하고, 가독성을 높이는 방법
- 객체의 필드가 많거나, 일부만 초기화해야 하는 경우에 유용
- 메서드 체이닝을 활용해 객체 생성 과정을 직관적이고 단계적으로 표현
- @Builder 어노테이션을 통해 빌더 패턴을 쉽게 구현합니다.
5. 로그 객체 생성
- 로그 객체 : 애플리케이션 실행 중에 발생하는 정보를 기록(log)하기 위한 객체
- @Slf4j, @Log 등을 사용하면 로그 객체를 자동으로 생성합니다.
6. 메서드 집합
- @Data를 사용해 한번에 여러 메서드를 자동으로 생성합니다.
- @Getter (모든 필드의 getter 메서드)
- @Setter (모든 필드의 setter 메서드)
- @ToString (객체 정보를 문자열로 반환하는 메서드)
- @EqualsAndHashCode (객체 비교 메서드)
- @RequiredArgsConstructor (final 필드를 포함하는 생성자)
설치
1. Maven
pom.xml에 Lombok 의존성을 추가합니다.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version> <!-- 버전은 최신으로 설정 -->
<scope>provided</scope>
</dependency>
2. Gradle
build.gradle에 Lombok 의존성을 추가합니다.
implementation 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
3. IDE 설정
Lombok은 IDE에서도 동작해야 하므로, Lombok 플러그인을 설치해야 합니다.
- IntelliJ: Settings > Plugins > Lombok 검색 후 설치
- Eclipse: Eclipse Marketplace에서 Lombok 설치
사용법
1. Getter/Setter 자동 생성
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String name;
private int age;
}
- 위 코드로 인해 getName(), setName(String name) 등이 자동 생성됩니다.
- 개발자가 직접 메서드를 작성하지 않아도 됩니다.
2. 생성자 자동 생성
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
@NoArgsConstructor // 기본 생성자 생성
@AllArgsConstructor // 모든 필드 포함 생성자 생성
@RequiredArgsConstructor // final 필드만 포함하는 생성자 생성
public class User {
private String name;
private final int age; // RequiredArgsConstructor는 final 필드만 포함
}
3. 빌터 패턴
(1) 빌더 패턴 없이
public class User {
private String name;
private int age;
private String email;
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
}
public class Main {
public static void main(String[] args) {
User user = new User("Alice", 25, "alice@example.com");
System.out.println(user);
}
}
(2) 빌더 패턴 사용
import lombok.Builder;
@Builder
public class User {
private String name;
private int age;
}
// 빌더 사용 예시
public class Main {
public static void main(String[] args) {
User user = User.builder()
.name("Alice")
.age(25)
.build();
System.out.println(user);
}
}
4. 로그 자동 생성
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Main {
public static void main(String[] args) {
log.info("Hello, Lombok!"); // 로그 객체를 자동 생성
}
}
룸복 사용 전후 비교
1. 룸복 없이 작성
public class User {
private String name;
private int age;
public User(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 "User{name='" + name + "', age=" + age + "}";
}
}
2. 룸복 사용
import lombok.Data;
@Data // @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 포함
public class User {
private String name;
private int age;
}
장단점
* 장점
- 코드 간소화 : 반복적인 getter, setter, 생성자, toString 코드 작성을 줄임
- 가독성 향상 : 핵심 로직에만 집중할 수 있음
- 생산성 증가 : 더 적은 코드로 더 빠르게 개발 가능
* 단점
- 코드 간소화 : 반복적인 getter, setter, 생성자, toString 코드 작성을 줄임
- 가독성 향상 : 핵심 로직에만 집중할 수 있음
- 생산성 증가 : 더 적은 코드로 더 빠르게 개발 가능
출처
OpenAI의 ChatGPT (https://openai.com)
'Java > Grammar' 카테고리의 다른 글
[Java 문법] Stream API 주요 method 정리 (1) | 2024.12.31 |
---|---|
[Java 문법] 데이터 타입 (Data Type) (1) | 2024.12.28 |
[Java 문법] HashMap (1) | 2024.12.10 |
[Java 문법] Map (1) | 2024.12.09 |
[Java 문법] 삼항 연산자 (ternary operator) (0) | 2024.12.09 |