본문 바로가기
🌱 Computer Science/Programming

[Java] LOMBOK(롬복)란?

by 카프리썬_ 2021. 4. 5.
728x90
728x90

 LOMBOK(롬복)란? 

Java 라이브러리로 반복되는getter,setter,toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리

 

쓰면 뭐가좋은데? 
보통 클래스에서 생성한 멤버변수에 대응되는 getter, setter,toString()메소드,생성자를 하나씩 다 작성해야함.

심지어 코드자체가 반복되는 메소드라 번거롭다.

그런데 롬복을 이용하면 코드도 보기 쉽게 작성할 수 있다! 

->반복되는 코드를 줄여줌으로써 가독성UP

 

어노테이션을 제공하고, 이를 기반으로 코드를 컴파일 과정에서 생성해주기 때문

즉, 코딩과정에서는 롬복과 관련된 어노테이션만 보이고 

getter/setter과 같은 메서드는 보이지 않는다.

하지만 그래도 실제로 컴파일된 결과물에는 코드가 생성되어 있다 

 

어떻게 쓰는데?

Dependency 추가하기 

<Maven 사용하는 경우 : pom.xml에 추가>

 

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.16.20</version>

</dependency>

<Gradle 사용하는 경우 : build.gradle에 추가>

provided 'org.projectlombok:lombok:1.16.20'

롬복 적용하기 전후 비교

<롬복쓰기 전> Category 모델클래스 정의

public class CategoryModel {
      private String id;
      private String parentId;
      private String name;
      private Long depthLevel;
      private Long seq;
      private String userYn;
      
      public CategoryModel() {}
      
      public CategoryModel(String id, String parentId, String name, Long  depthLevel, Long seq, String userYn) {
            super();
            this.id = id;
            this.parentId = parentId;
            this.name = name;
            this.depthLevel = depthLevel;
            this.seq = seq;
            this.userYn = userYn;
      }
 
      public String getId() {
            return id;
      }
      
      public void setId(String id) {
            this.id = id;
      }
      
      public String getParentId() {
            return parentId;
      }
      
      public void setParentId(String parentId) {
            this.parentId = parentId;
      }
      
      public String getName() {
            return name;
      }
      
      public void setName(String name) {
            this.name = name;
      }
      
      public Long getDepthLevel() {
            return depthLevel;
      }
      
      public void setDepthLevel(Long depthLevel) {
            this.depthLevel = depthLevel;
      }
      
      public Long getSeq() {
            return seq;
      }
      
      public void setSeq(Long seq) {
            this.seq = seq;
      }
      
      public String getUserYn() {
            return userYn;
      }
      
      public void setUserYn(String userYn) {
            this.userYn = userYn;
      }
      @Override
      public String toString() {
            return "CategoryModel [id=" + id + ", parentId=" + parentId  + ", name=" + name + ", depthLevel=" + depthLevel
                        + ", seq=" + seq + ", userYn=" + userYn + "]";
      }
      

<롬복쓴 후>  Category 모델클래스 정의 - @Getter, @Setter 등 어노테이션만 붙여주면 된다.

또는 @Data하나만 붙여서도 사용할 수 있다

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class CategoryModel {
      private String id;
      private String parentId;
      private String name;
      private Long depthLevel;
      private Long seq;
      private String userYn;
      
}
@Data
public class CategoryModel {
      private String id;
      private String parentId;
      private String name;
      private Long depthLevel;
      private Long seq;
      private String userYn;
}

 

주의사항은?

api설명과 내부동작을 어느정도 숙지해야한다.

편리하다고 쉽다고 마구쓰게 되면

예를 들어 @Data 어노테이션, @ToString어노테이션으로 자동생성되는 toString() 무한재귀호출에 빠질수도 있음 

 

롬복 어노테이션 사용 예제

goddaehee.tistory.com/95

 

[Java] 소스 다이어트! Lombok 어노테이션

[Java] 소스 다이어트! Lombok 어노테이션 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Lombok ] 입니다. :) ▶ Lombok 이란? 롬복(Lombok)은 자바에서 Model(DTO, VO, Domain) Object 를 만들때, 멤버필드(프..

goddaehee.tistory.com

출처 : dololak.tistory.com/786

 

728x90
반응형