lombok이란 Java라이브러리의 한 종류 로 반복 메서드의 작성코드를 줄여주는 코드 다이이어트 라이브러리 이다.
Java에서 Model 클래스나 Entity와 같은 도메인 클래스 등에는 수많은 멤버변수가 있고 이에 대응하는 Getter, Setter 그리고 toString() 메서드 등을 만들어주게 된다.
기본적으로 이클립스나 인텔리제이 모두 자동생성 기능을 지원하고 있으나, 여러 클래스에서 일일이 자동생성을 한다는 것은 매우 번거로운 작업이 아닐 수 없다.
lombok은 여러가지 어노테이션@@@@ 을 제공하고 이를 기반으로 반복되는 소스코드(Getter, Setter 등)를 컴파일 과정에서 생성해주는 방식으로 동작 하는 라이브러리이다.
즉, 코딩 과정에서 롬복과 관련된 어노테이션만 보이고 Getter, Setter 등은 생략되지만 실제로 컴파일된 Class 파일 결과 물에는 코드가 생성 되어 있는 것이다.
간단한 예로 보여주자면 다음과 같다.
Java코드
public class product {
private String name ;
private String period_production ;
private int production_cost ;
private int sale_cost ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPeriod_production() {
return period_production;
}
public void setPeriod_production(String period_production) {
this.period_production = period_production;
}
public int getProduction_cost() {
return production_cost;
}
public void setProduction_cost(int production_cost) {
this.production_cost = production_cost;
}
public int getSale_cost() {
return sale_cost;
}
public void setSale_cost(int sale_cost) {
this.sale_cost = sale_cost;
}
@Override
public String toString() {
return "product{" +
"name='" + name + '\'' +
", period_production='" + period_production + '\'' +
", production_cost=" + production_cost +
", sale_cost=" + sale_cost +
'}';
}
}
lombok 적용 코드
import lombok.*;
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class product {
private String name ;
private String period_production ;
private int production_cost ;
private int sale_cost ;
}
추가로 @Data 어노테이션을 활용하면 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동완성 시켜준다.
import lombok.*;
@Data
public class product {
private String name ;
private String period_production ;
private int production_cost ;
private int sale_cost ;
}
일반 Java코드와 비교하였을 때 소스 다이어트 효과가 얼마나 대박인지 한눈에도 차이가 나는 걸 알 수
있다!!
'Backend > JAVA' 카테고리의 다른 글
[JAVA] Functional Interface (함수형 인터페이스) (0) | 2022.05.03 |
---|---|
[JAVA] Lambda Expression(람다 표현식) (0) | 2022.01.27 |
[JAVA] JAVA 8 의 주요 변경사항 (0) | 2022.01.27 |
[JAVA] this 와 super (1) | 2022.01.20 |
[JAVA] 생성자(Constructor) (0) | 2022.01.19 |