Lombok
Java 라이브러리로 반복되는 getter, toString, 생성자 등의 반복적으로 만드는 코드를 자동으로 작성해주는 코드 다이어트 라이브러리입니다.
lombok 은 컴파일 단계에서만 사용됩니다. 따라서 build.gradle 에서 compileOnly 로 설정합니다.
컴파일 단계가 끝나면 lombok의 각 어노테이션에 해당하는 메서드가 자동 생성되고, 어노테이션은 제거됩니다.
compileOnly "org.projectlombok:lombok:${lombokVersion}"
어노테이션
컴파일 전 DTO 입니다.
각 어노테이션이 컴파일 후 어떻게 코드를 자동 생성하는지 확인했습니다.
@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class OrderReqDTO {
private Long orderId;
private Long productId;
private String productName;
}
@Getter
@Generated
public Long getOrderId() {
return this.orderId;
}
@Generated
public Long getProductId() {
return this.productId;
}
@Generated
public String getProductName() {
return this.productName;
}
가장 흔히 사용하는 getter 입니다. get + 필드명 형태로 현재 인스턴스의 필드 값을 조회합니다.
@Setter
@Generated
public void setOrderId(final Long orderId) {
this.orderId = orderId;
}
@Generated
public void setProductId(final Long productId) {
this.productId = productId;
}
@Generated
public void setProductName(final String productName) {
this.productName = productName;
}
getter 와 유사합니다. set + 필드명으로 현재 인스턴스의 필드 값을 변경합니다.
@NoArgsConstructor
@Generated
public OrderReqDTO() {
}
파라미터가 없는 기본 생성자를 자동 생성해주는 어노테이션입니다.
@AllArgsConstructor
@Generated
public OrderReqDTO(final Long orderId, final Long productId, final String productName) {
this.orderId = orderId;
this.productId = productId;
this.productName = productName;
}
모든 필드를 파라미터로 사용하는 생성자를 자동 생성해주는 어노테이션입니다.
@ToString
@Generated
public String toString() {
Long var10000 = this.getOrderId();
return "OrderReqDTO(orderId=" + var10000 + ", productId=" + this.getProductId() + ", productName=" + this.getProductName() + ")";
}
클래스의 각 필드값을 문자형태로 확인할 수 있도록 메서드를 생성해주는 어노테이션입니다.
왜 사용하는지 궁금했는데, 테스트 단계에서 어떤 요청/응답값인지 로그로 확인할 때 유용했습니다.
@Builder
// Builder 생성자
@Generated
public static OrderReqDTOBuilder builder() {
return new OrderReqDTOBuilder();
}
// Builder
@Generated
public static class OrderReqDTOBuilder {
@Generated
private Long orderId;
@Generated
private Long productId;
@Generated
private String productName;
@Generated
OrderReqDTOBuilder() {
}
// 필드 값을 설정하고, Builder 를 반환하는 메서드
@Generated
public OrderReqDTOBuilder orderId(final Long orderId) {
this.orderId = orderId;
return this;
}
@Generated
public OrderReqDTOBuilder productId(final Long productId) {
this.productId = productId;
return this;
}
@Generated
public OrderReqDTOBuilder productName(final String productName) {
this.productName = productName;
return this;
}
// 필드 값을 모두 설정 한 후, 최종으로 인스턴스를 반환하는 메서드
@Generated
public OrderReqDTO build() {
return new OrderReqDTO(this.orderId, this.productId, this.productName);
}
}
빌더 패턴을 사용할 수 있도록 도와주는 어노테이션입니다.
- 클래스.builder 패턴으로 빌더를 생성함
- 각 필드 속성값을 설정함, 값을 설정한 Builder 를 반환함
- Builder의 필드 값으로 생성한 인스턴스를 반환함
빌더 패턴을 사용하면 순서에 상관없이 필드 값을 설정할 수 있고, 가독성이 증가합니다. (필드 값이 많을 경우)
'Java' 카테고리의 다른 글
가비지 컬렉터(Garbage Collector) 의 종류 (0) | 2023.11.29 |
---|---|
소나 큐브 사용법(Sonar Qube) (0) | 2023.11.29 |
Java Optional (0) | 2023.09.29 |
Java Stream 최종 처리 (0) | 2023.09.14 |
Java Stream 중간 처리 (0) | 2023.09.14 |