728x90
Lombok이란?
개발자들을 위한 자바 라이브러리로 IDE나 빌드 툴에 추가하여 사용할 수 있다. 코드 가독성을 높이고 생산성 향상에 도움을 준다.
나는 주로 DTO 같은 모델 작성에 많이 사용한다.
다음과 메일 모델이 있다고 가정해보자.
public class Mail {
private String userId;
private String userNm;
private String content;
private String sendDate;
public String getUserId() {
return this.userId;
}
public void setUserId(String id) {
this.userId = id;
}
public String getUserNm() {
return this.userId;
}
public void setUserNm(String name) {
this.userNm = name;
}
.....
}
원래라면 저 private 변수에 접근하기 위해 위처럼 get/set 함수를 다 작성해야 하지만 여간 귀찮은게 아님..
그걸 도와주는 게 lombok 어노테이션이다.
@Getter, @Setter
필드에 대한 getter, setter 함수를 자동으로 생성해준다. (저 위에 함수들 안써도 됨)
@ToString
toString() 메서드를 자동으로 생성해준다. 클래스 필드들을 문자열로 만들어준다.
이때, exclude를 사용하면 특정 필드를 제외시킬 수 있다.
@ToString(exlude="password")
public class Mail {
private String userId;
private String password;
private String content;
private String sendDate;
}
Mail mail = new Mail();
mail.setUserId("1");
mail.setPassword("비밀");
mail.setContent("내용");
..
System.out.println(mail); // => Mail(userId=1, content=내용)
@EqualsAndHashCode
equals() 메서드와 hashCode() 메서드를 생성해준다.
- equals : equality => 두 객체가 동일한가!
- hashCode : identity => 두 객체가 같은 객체인가!
간단히 말하면, 두 객체가 같은 객체인지를 확인하는게 equals() 이고, 서로 다른 객체이지만 그 내부 필드가 같은지를 확인하는 것이 hashCode()이다.
@RequiredArgsConstructor
초기화 되지 않은 final이나 @NonNull이 붙은 필드와 같이 필수 인자만을 가지는 생성자를 자동으로 생성해준다.
그리고 이 모든 걸 합쳐놓은 게 @Data 어노테이션이다!
@Data
- @Getter, @Setter, @ToString, @EqualsAndHashCode , @RequiredArgsConstructor 까지 자동으로 한번에 생성해준다.
@Data
public class Mail {
private String userId;
private String userNm;
private String content;
private String sendDate;
}
사실 무분별한 @Data 사용은 좋지 않다고 하니, 적절히 쓰자
728x90