카테고리 없음
Lombok이란?
alclssha
2023. 1. 3. 23:05
Lombok
- Java의 라이브러리로 반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러리
- 보통 DTO나 Model, Entity의 경우 여러 속성이 존재하고 이들이 가지는 프로퍼티에 대해서 Getter나 Setter, 생성자 등을 매번 작성해줘야 하는 경우가 많은데 이러한 부분을 자동으로 만들어주는 라이브러리임
- 코딩 과정에서 롭복과 관련된 어노테이션만 보이고 getter,setter 등의 생략되지만 실제로 컴파일된 결과물 .class 파일에는 코드가 생성되어 있음
장점
- 어노테이션 기반의 코드 자동생성을 통한 생산성 향상
- 반복코드 다이어트를 통해 가독성 및 유지보수성 향상
- Getter/Setter 외 빌더 패턴이나 로그생성 등 다양한 방면으로 활용 가능
단점 및 주의사항
- 코드가 직접적으로 눈에 보이지 않기 때문에 직관적이지 않을 수도 있음
- API설명과 내부동작에 대해서 제대로 숙지하지 않으면 오히려 사용할 때 문제가 발생할 수 있음
- 편하다는 이유로 무분별한 사용이 이루어지면 여러가지 예외문제가 발생할 수 있음
- 실무에서는 필요없는 것까지 포함시키는 경우가 있어 상황에 맞게 사용해야 함
lombok과 Java코드의 차이
lombok
import lombok.*;
@Getter
@Setter
public class TestStudent{
private String student_name;
private String student_id;
private String student_password;
}
java
public class TestStudent{
private String student_name;
private String student_id;
private String student_password;
public String getStudent_name(){
return student_name;
}
public void setStudent_name(String student_name){
this.student_name = student_name;
}
public String getStudent_id(){
return student_id;
}
public void setStudent_id(String student_id){
this.student_id = student_id;
}
public String getStudent_password(){
return student_password;
}
public void setStudent_password(String student_password){
this.student_password = student_password;
}
}
- 위를 보고 알 수 있듯이, 반복되는 작업들을 lombok 라이브러리를 통하여 간단하게 코드를 작성 할 수 있음
- lombok을 사용한 코드가 일반적인 java코드에 비해 생산성 유지보수 및 가독성을 높일 수 있는 것을 볼 수 있음
자주 사용되는 lombok 어노테이션
- @NorgsConstructor : 파라미터가 없는 기본 생성자를 만들어줌
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 만들어줌
- @RequiredArgsConstructor : final이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 만들어줌
- @EqualsAndHashCode : equals와 hashcode를 자동으로 생성해주는 어노테이션
- @Data
- 위에서 설명한 Getter, Setter, RequiredArgsConstructor, ToString, EqualsAndHashCode를 한번에 설정해주는 어노테이션으로 실무에서는 너무 무겁고 객체의 안정성을 지키기 때문에 @Data의 활용을 지양
- @Builder : 자동으로 해당 클래스에 빌더를 추가