lombok 사용
반복되는 코드의 작성을 생략할 때 도와주는 어노테이션인 lombok에 대해 알아보겠습니다.
lombok
데이터(모델) 클래스를 생성할 때 반복적으로 사용하는 Getter/Setter 같은 메서드를 어노테이션으로 대체하는 기능을 제공하는 라이브러리이다.
lombok 의 장점
- 어노테이션 기반으로 코드를 자동 생성하므로, 생산성이 높아진다.
- 반복되는 코드를 생략할 수 있어서 가독성이 높아진다.
- 롬복을 안다면 간단하게 코드를 유추할 수 있어 유지보수에 용이하다.
lombok 의 의존성(dependencies) 생성
Maven(pom.xml)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Gradle(build.gradle)
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
lombok 의 plug in 설치
- 인텔리제이 IDEA 메뉴 -> [File] -> [Settings] -> [plugins]
- Marketplace -> 'lombok' 검색 -> [Installed]
- Setting 창에서 [Build.Execution.Deployment] -> [Complier] -> [Annotation Processors]
- [Enable annotation processing] 항목 체크
lombok 주요 어노테이션
@Getter, @Setter
- 클래스에 선언되어 있는 필드에 대한 getter/setter 메서드를 생성한다.
- @Getter/@Setter 어노테이션을 통해 해당 클래스가 가지고 있는 필드에 대해 각각 getter/setter 메서드가 생성된다.
public class ProductDto {
private String name;
private int price;
private int stock;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
}
생성자 자동 생성 어노테이션
- NoArgsConstructor : 매개변수가 없는 생성자를 자동 생성한다.
- AllArgsConstructor : 모든 필드를 매개변수로 갖는 생성자를 자동 생성한다.
- RequiredArgsConstructor : 필드 중 final 이나 @NotNull이 설정된 변수를 매개변수로 갖는 생성자를 자동 생성한다.
public class ProductDto {
private String name;
private int price;
private int stock;
public ProductDto() {
}
public ProductDto(String name, int price, int stock) {
this.name = name;
this.price = price;
this.stock = stock;
}
}
@ToString
- toString() 메서드를 생성하는 어노테이션이다.
- 클래스에 @toString()을 적용하면 해당 코드의 toString() 메서드를 생략해도 된다.
public class ProductDto {
private String name;
private int price;
private int stock;
@Override
public String toString() {
return "ProductDto{" +
"name='" + name + '\'' +
", price=" + price +
", stock=" + stock +
'}';
}
}
@EqualsAndHashCode
- 객체의 동등성(Equality)과 동일성(Identity)을 비교하는 연산 메서드를 생성한다.
- 클래스에 @EqualsAndHashCode()을 적용하면 해당 코드의 equals() 메서드와 hashcode() 메서드를 생략해도 된다.
public class ProductDto {
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProductDto that = (ProductDto) o;
return price == that.price && stock == that.stock && Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(name, price, stock);
}
private String name;
private int price;
private int stock;
}
@Data
- @Getter/@Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashcode를 모두 포괄하는 어노테이션이다.
@Data
public class ProductDto {
private String name;
private int price;
private int stock;
@Override
public String toString() {
return "ProductDto{" +
"name='" + name + '\'' +
", price=" + price +
", stock=" + stock +
'}';
}
}
반응형
'Book > 스프링부트 핵심가이드' 카테고리의 다른 글
Spring Data JPA 쿼리 메서드 개념과 사용 방법 (0) | 2023.11.08 |
---|---|
Service, Controller 클래스 생성 및 메서드 구현 (0) | 2023.11.03 |
DAO(Data Access Object) 개념과 클래스 구성 (0) | 2023.11.03 |
댓글