[Spring] Lombok

rekv·2025년 2월 5일

Spring

목록 보기
8/15

Lombok 이란?

어노테이션 기반으로 코드를 자동완성 해주는 라이브러리
Lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성 시킬 수 있다.

사용법

build.gradle에 아래의 코드를 추가

implementation 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok:1.18.36'
annotationProcessor 'org.projectlombok:lombok:1.18.36'

ProductRegisterReq 예시

public class ProductRegisterReq {
  String name;
  String description;
  double price;

  public ProductRegisterReq() {
  }

  public ProductRegisterReq(String name, String description, double price) {
    this.name = name;
    this.description = description;
    this.price = price;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public double getPrice() {
    return price;
  }

  public void setPrice(double price) {
    this.price = price;
  }

}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class ProductRegisterReq {
  String name;
  String description;
  double price;
}

생성자 및 getter, setter를 따로 명시할 필요 없어짐

ProductController 예시

@RestController
@RequestMapping("/product")
public class ProductController {
  private final ProductService productService;
  public ProductController(ProductService productService){
  	this.producService = productService;
  }
@RestController
@RequestMapping("/product")
@RequiredArgsConstructor
public class ProductController {
  private final ProductService productService;

마찬가지로 알아서 생성자를 만들고 의존성을 주입해주므로 final마다 일일이 생성자를 만들 필요가 없어짐

  • 어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
  • 반복되는 코드 다이어트를 통한 가독성 및 유지보수성 향상
  • Getter, Setter 외에 빌더 패턴이나 로그 생성 등 다양한 방면으로 활용 가능

종류

어노테이션설명
@NoArgsConstructor아무것도 없는 기본 생성자 생성
@AllArgsConstructor모든 변수를 매개변수로 전달받는 생성자 생성
@RequiredArgsConstructor초기화되지 않은 final 필드나, @NonNull이 붙은 필드의 생성자 생성
@Getter필드에 대한 getter 메서드 생성
@Setter필드에 대한 setter 메서드 생성
@ToString클래스의 필드 정보를 문자열로 출력하는 toString() 메서드 생성
@EqualsAndHashCodeequals()와 hashCode() 메서드 자동 생성
@Data@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한 번에 적용
@Value불변 클래스 생성 (final 필드, getter, 생성자 자동 생성)
@Builder빌더 패턴 구현을 위한 코드 자동 생성
@Singular컬렉션 필드에 대해 빌더 패턴 적용 시 요소를 개별적으로 추가할 수 있도록 지원
@Slf4jLombok에서 지원하는 로깅 프레임워크 중 하나를 적용하여 Logger 객체 자동 생성 (Log4j, Logback 등 지원)
@Logjava.util.logging.Logger를 사용하는 Logger 객체 생성
@Cleanuptry-finally 블록 없이 리소스 자동 해제 (close() 호출)
@SneakyThrows체크 예외를 컴파일러에 알리지 않고 던질 수 있도록 지원
@NonNull메서드나 생성자의 매개변수가 null이 아닌지 자동으로 검증
@With불변 객체의 특정 필드 값을 변경한 새로운 객체를 반환하는 with 메서드 생성
@FieldDefaults클래스 내 필드의 기본 접근 제어자 및 final 속성을 설정
@Accessorsgetter/setter 메서드의 이름 규칙을 커스터마이징 가능 (플루언트 스타일 등)
@SuperBuilder상속 구조에서도 사용할 수 있는 빌더 패턴 지원
@TolerateLombok이 자동 생성한 메서드 외에도 개발자가 직접 작성한 메서드를 허용
@Generated코드 생성 도구로 생성된 코드를 표시하는 어노테이션 (주로 IDE나 코드 분석 도구에 사용)

0개의 댓글