Spring

[Spring] Lombok 정리

2022. 2. 4. 17:55

Lombok

Java 라이브러리중 하나로 getter, setter, toString 등의 반복 메서드를 줄여주는 라이브러리

import lombok.*; 

@Getter 
@Setter 
@ToString 
@NoArgsConstructor 
@AllArgsConstructor 
public class TestLombok { 
   private String test_id; 
   private String test_name; 
}

 

@Getter, @Setter 등 5개 대신에 @Data 하나로 통합 가능

import lombok.*; 

@Data
public class TestLombok { 
   private String test_id;
   private String test_name;
}

 

기본 public으로 들어가고 protected, private 설정을 따로 줄수 있음

import lombok.*; 

@Data
public class TestLombok { 
  @Getter(AccessLevel.PRIVATE)
  @Setter(AccessLevel.PROTECTED) 
  private String test_name; 
}

 

 

1. @NonNull

메소드나 생성자의 매개변수에 @NonNull을 사용하면 lombok이 null check를 해준다.

import lombok.*; 

@Data
public class TestLombok {
   @NonNull
   private String test_id;
   private String test_name;
}

 

2. @ToString

toString() 메소드를 생성

 

3. @Builder

Builder 패턴을 자동으로 생성

 

4. @AllArgsConstructor

클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성

@AllArgsConstructor
public class Test {
   private String name;
   private int age;
}

 

5. @NoArgsConstructor

파라미터가 없는 생성자를 생성

필드들이 final로 생성되어 있는 경우에는 필드를 초기화 할 수 없기 때문에 생성자를 만들 수 없고 에러가 발생

  ( @NoArgsConstructor(force = true) 옵션을 이용해서 final 필드를 0, false, null 등으로 초기화를 강제로 시켜서 생성 )

@NonNull 같은 제약조건이 걸려있는 경우 생성자내 null-check 로직이 생성되지 않음

@NoArgsConstructor
public class Test {
    private String name;
    @NonNull
    private int age; 
}

 

6. @RequiredArgsConstructor

초기화 되자않은 필드에 대해 생성자를 생성

주로 @AutoWired 없이 의존성 주입 편의성을 위해서 사용

@Service
@RequiredArgsConstructor
public class TestServiceExample {
  private final TestRepository testRepository;
  ...
}