Spring(혹은 다른 서버 프레임워크)에서 각 레이어간의 통신 혹은 클라이언트와의 통신을 위해 DTO를 생성한다. 이때, 다음과 같이 DTO 별로 생성해야 하는 반복적인 코드들이 있다.
Lombok이란 Annotation기반으로 코드를 자동완성 해주는 라이브러리이다. 해당 라이브러리는 Getter, Setter, Equals, ToString 등 반복적인 코드를 어노테이션을 추가하면 자동으로 생성해준다.
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
@NotNull
@EqualsAndHashCode
@ToString
@Data
@Builder
@Delegate
@Log
[Lombok의 장점]
@Getter, @Setter
@AllArgsConstructor
@NoArgsConstructor
@NotNull
@RequiredArgsConstructor
public class people {
@NotNull
private String name;
private final String gender;
// 다음과 같은 생성자가 자동 생성된다.
public People(String name, String gender){
this.name = name;
this.gender = gender;
}
}
@EqualsAndHashCode
클래스에 대한 Equals 함수와 HashCode 함수를 자동으로 생성해준다.
만약 서로 다른 두 객체에서 특정 변수가 일치하면 같은 객체로 판단하고 싶다면 아래와 같이 옵션을 추가할 수 있다.
@EqualsAndHashCode(of = {[변수1],[변수2]}, callSuper = false)
변수 1과 변수2의 값이 일치하는 객체라면 같은 객체로 판단한다. 단, 상위 클래스의 경우에는 해당 hashcode를 적용시키지 않기 위해 callSuper = false로 설정한다.