ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lombok이란?
    카테고리 없음 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 : 자동으로 해당 클래스에 빌더를 추가

     

     

     

     

Designed by Tistory.