728x90
Lombok이란?
자바에서 반복적인 보일러플레이트 코드를 줄이기 위해 사용하는 라이브러리
Spring Boot에서 DTO, Entity, Service, Controller 등의 클래스에서 getter, setter, 생성자, toString() 등의 메서드를 자동으로 생성해주기 때문에 코드가 깔끔해지고 가독성이 좋아진다.
보일러플레이트란?
더보기
보일러플레이트란 반복적으로 작성해야 하는 코드를 의미한다.
즉, 기능적으로는 중요하지 않지만 반드시 작성해야 하는 코드를 뜻한다.
= 똑같거나 비슷한 코드가 반복적으로 작성되는 부분
ex) getter, setter 등
Lombok 라이브러리 추가 (Gradle)
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.36'
annotationProcessor('org.projectlombok:lombok')
}
주요 어노테이션
@Getter, @Setter
getter와 setter 메서드를 자동으로 생성해준다.
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class UserDto {
private String name;
private String email;
}
생성자
NoArgsConstructor : 기본 생성자
- public UserDto()
AllArgsConstructor : 모든 필드를 포함한 생성자
- public UserDto(String name, String email)
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@NoArgsConstructor // 기본 생성자 생성
@AllArgsConstructor // 모든 필드를 포함한 생성자 생성
public class UserDto {
private String name;
private String email;
}
@RequiredArgsConstructor
: 변수 중에서 final이 붙어있는 것만 매개변수로 넘겨 받는 생성자
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository; // final 필드만 생성자에 포함됨
// @RequiredArgsConstructor는 아래와 같은 동작을 한다.
// public UserService(UserRepository userRepository) {
// this.userRepository = userRepository;
// }
}
@Builder
빌더 패턴을 자동으로 생성해주는 기능
객체를 유연하고 직관적으로 생성할 수 있도록 도와주는 패턴이다.
생성자보다 가독성이 좋고, 필드 순서를 고려하지 않아도 된다.
불필요한 생성자 오버로딩을 줄일 수 있다.
import lombok.Builder;
import lombok.ToString;
@Builder
public class User {
private String name;
private String email;
private int age;
}
// Builder로 객체 생성
User user = User.builder()
.name("John Doe")
.email("john@example.com")
.age(30)
.build();
@Builder는 @AllArgsConstructor와 함께 사용해야 한다 !
=> 기본적으로 @Builder는 모든 필드를 포함하는 생성자가 필요하기 때문에 함께 사용해야 한다.
import lombok.Builder;
import lombok.AllArgsConstructor;
@Builder
@AllArgsConstructor
public class User {
private String name;
private String email;
private int age;
}
DTO에서 @Builder를 사용할 때 @NoArgsConstructor와 함께 사용해야 한다 !
=> 스프링에서 DTO를 RequestBody로 받을 때 Jackson이 기본 생성자가 필요하기 때문에,
DTO 클래스에서는 @NoArgsConstructor를 함께 사용해야 한다.
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@Builder
@NoArgsConstructor // 기본 생성자 추가
@AllArgsConstructor // 모든 필드를 포함하는 생성자 추가
public class UserDto {
private String name;
private String email;
private int age;
}
728x90
'BE > Spring Boot' 카테고리의 다른 글
[Spring Boot] Spring Security란? / 인증(Authentication) 수행 과정 (0) | 2025.02.10 |
---|---|
[Spring Boot] 연관관계 매핑 (0) | 2025.02.10 |
[Spring Boot] DTO 생성 방법 (단일 파일, 이너 클래스) / 생성 시 주의사항 (0) | 2025.02.10 |
[Spring Boot] Repository 메서드 생성 규칙 (findAll, findBy) (0) | 2025.02.07 |
[Spring Boot] JPA란? / JPA 구성 요소(Entity, Repository) / JPA로 DB 다루기 (1) | 2025.02.06 |