카테고리 없음

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 : 자동으로 해당 클래스에 빌더를 추가