Lombok 어노테이션들을 알아보겠습니다.
참고 : https://projectlombok.org/features/all
@Data
어노테이션은 @ToString, @EqualsAndHashCode, @Getter, @Setter(non-final field) 그리고 @RequiredArgsConstructor를 합해 놓은 단축 어노테이션이다.
@ToString
Java에서 toString() 메소드는 java.lang 클래스에서 기본적으로 제공하는 메서드입니다. toString()메서드를 오버라이딩해서 사용하는 경우가 많은데, 사용 예를 보면 다음과 같습니다.
/*참조 : https://projectlombok.org/features/ToString*/
import java.util.Arrays;
public class ToStringExample {
private static final int STATIC_VAR = 10;
private String name;
private Shape shape = new Square(5, 10);
private String[] tags;
private int id;
public String getName() {
return this.name;
}
public static class Square extends Shape {
private final int width, height;
public Square(int width, int height) {
this.width = width;
this.height = height;
}
@Override public String toString() {
return "Square(super=" + super.toString() + ", width=" + this.width + ", height=" + this.height + ")";
}
}
@Override public String toString() {
return "ToStringExample(" + this.getName() + ", " + this.shape + ", " + Arrays.deepToString(this.tags) + ")";
}
}
이와 같이 override를 통해서 toString()메서드를 제정의해주는 이 부분을 @ToString이 대신해줍니다. 사용 예는 다음과 같습니다. 디버그하기 위해서 toString()메서드를 재정의하지 않고, @ToString을 통해서 값을 바로 확인할 수 있습니다.
/*참조 : https://projectlombok.org/features/ToString*/
import lombok.ToString;
@ToString
public class ToStringExample {
private static final int STATIC_VAR = 10;
private String name;
private Shape shape = new Square(5, 10);
private String[] tags;
@ToString.Exclude private int id;
public String getName() {
return this.name;
}
@ToString(callSuper=true, includeFieldNames=true)
public static class Square extends Shape {
private final int width, height;
public Square(int width, int height) {
this.width = width;
this.height = height;
}
}
}
@EqualsAndHashCode
Hashcode랑 equals구현체를 쉽게 구현할 수 있게 해주는 어노테이션입니다.
@NoArgsConstructor
Generates constructors that take no arguments
생성자에 어떤 필드도 존재하지 않는 생성자를 자동생성해 줍니다.
With Lombok | Vanilla Java |
@RequiredArgsConstructor
Generates constructors that take one argument per final / non-null field
클래스에 final이나 @NonNull 어노테이션으로 잡힌 멤버필드를 대상으로만 생성자를 만듭니다.
With Lombok | Vanilla Java |
@AllArgsConstructor
Generates constructors that take one argument for every field.
클래스의 모든 멤버필드를 생성자의 매개변수로 생성자를 자동 생성합니다.
With Lombok | Vanilla Java |
@Builder
클래스에 @Builder를 사용할 경우, @AllArgsConstructor와 같은 기능으로, 모든 멤버 필드에 대해서 매개변수를 받는 기본 생성자를 만듭니다.
객체를 생성할 때, 받지 않아도 될 매개변수들이 잡히게 되서 불안전한 객체생성이 되버립니다. 생성자메서드 위에 @Builder를 선언하는 것이 좋습니다.
'경력' 카테고리의 다른 글
[업무][베트남🇻🇳] 개발 코드로 학습-1 app.vue 코드 뭉치 분리하기 (1) | 2021.07.13 |
---|---|
vscode 개발환경 세팅하기 (0) | 2021.01.22 |
[Linux]리눅스 환경의 값진 경험담 (0) | 2020.06.30 |
[Javascript]인터넷 익스플로러에서는 지원하지 않는 자바스크립트 함수가 있었다. (0) | 2020.04.23 |
[jstl]최악의 코드에서 그나마 나은 코드로... (0) | 2020.04.23 |
댓글