Lombok 이란?
반복되는 메소드를 Annotation을 사용하여 자동으로 작성해주는 라이브러리. 일반적으로 VO, DTO, Model, Entity 등의 데이터 클래스에서 주로 사용됨. 대표적으로 많이 사용되는 annotation => @Getter, @Setter, @NoArgConstructor, @AllArgConstructor, @Data, @ToString
Lombok 사용법 :
라이브러리 dependency 설정
<dependencies>
...
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<dependency>
...
<dependencies>
Lombok의 대표적인 어노테이션
@Getter, @Setter
- 해당 클래스에 선언되어 있는 필드를 기반으로 'getField', 'setField'와 같은 식으로 자동으로 메소드를 생성함.
@Getter
@Setter
public class MemberDTO {
private String name;
private String email;
private String organization;
}
↓
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getOrganization() {
return organization;
}
public void setOrganization(String organization) {
this.organization = organization;
}
@NoArgsConstructor
- 파라미터가 없는 생성자를 생성
@AllArgsConstructor
- 모든 필드값을 파라미터로 갖는 생성자를 생성
@RequiredArgsConstructor
- 필드값 중 final이나 @NotNull인 값을 갖는 생성자를 생성
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class MemberDTO {
private String name;
private String email;
private String organization;
}
@ToString
- toString 메소드를 자동으로 생성해주는 기능. @ToString 어노테이션에 exclude 속성을 사용하여 특정 필드를 toString에서 제외시킬 수 있음.
@ToString
public class MemberDTO {
private String name;
private String email;
private String organization;
}
@ToString(exclude = "email")
public class MemberDTO {
private String name;
private String email;
private String organization;
}
@Override
public String toString() {
return "MemberDTO{" + "\" +
"name='" + name + "\'" +
", email='" + email + "\'" +
", organization='" + organization + "\'" +
"}";
}
@EqualsAndHashCode
- equals(두 객체의 내용이 같은지 equality를 비교하는 연산자), hashCode(두 객체가 같은 객체인지 identity를 비교하는 연산자) 메소드를 자동으로 생성.
callSuper 속성을 통해 메소드 생성시 부모 클래스의 필드까지 고려할지 여부 설정 가능. callSuper = true -> 부모 클래스 필드 값들도 동일한지 체크
@Data
- 해당 기능을 사용하면 위의 모든 기능(@Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode)들을 한번에 추가해줌.
'Spring' 카테고리의 다른 글
ORM, JPA, Spring Data JPA 노트 (0) | 2022.11.03 |
---|---|
DTO, DAO, Repository, Entity 노트 (0) | 2022.11.02 |
POST, PUT, DELETE API + Swagger 라이브러리 노트 (0) | 2022.10.31 |
Get API 만드는 방법 노트 (0) | 2022.10.30 |
MVC Pattern 노트 (0) | 2022.10.29 |
댓글