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