본문 바로가기
Spring Framework

롬복(Lombok) 설치

by byeongoo 2019. 11. 5.

1. 롬복(Lombok) 이란?

롬복(Lombok)은 자바에서 Model(DTO, VO, Domain) Object 를 만들때, 멤버필드(프로퍼티)에 대한 Getter/Setter, ToString과 멤버필드에 주입하는 생성자를 만드는 코드 등 반복적으로 만드는 코드를 어노테이션을 통해 코드를 줄여주는 라이브러리입니다.

 

2. 롬복(Lombok) 설치방법

2.1 Maven 이용시

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.20</version>
</dependency>

2.2 롬복 jar 직접 다운로드

http://projectlombok.org/download.html

 

Download

 

projectlombok.org

다운받은 lombok.jar 파일을 더블클릭합니다. Specify location 버튼을 눌러 eclipse.ini 폴더를 지정하고, 확인 버튼을 누르면 Eclipse가 설치되어있는 목록이 나옵니다. Install/Update 버튼을 눌러 설치 한 후 Quit Installer 버튼을 누릅니다.

3. 롬복 사용예시

다음 코드가 롬복 사용시 어떻게 되는지 살펴보겠습니다.

public class ExampleVO {
    private final String name;
    private int age;
    public SimpleVO(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "name=" + name + ", age=" + age;
    }
}
public @Data class ExampleVO {
    private final String name;
    private int age;
}

코드가 아주 간단해지고 보기 편해진것을 확인할 수 있습니다.

 

4. 롬복 주의 사항

4.1@AllArgsConstructor, @RequiredArgsConstructor

타입을 필드 선언 순서를 나중에 바꿀 경우 문제가 발생 소지가 있기 때문에 해당 어노테이션 사용은 지양하고, 필요한 Field로 Constructor 를 직접 만들어야합니다.

@AllArgsConstructor
public class UserProfile {
    private int userSeq;
    private String userName;
    private String email;
    private String job;
}

UserProfile u = new UserProfile(1, "John", "lombok@study.com", "developer");

4.2 @EqualsAndHashCode

항상 @EqualsAndHashCode(of={“필드명”}) 형태로 동등성 비교에 필요한 필드를 명시

 

4.3 @Data

  • @RequiredArgsConstructor @EqualsAndHashCode 를 조합한 애너테이션이기 때문에 각 애너테이션의 주의사항이 포함된다.
  • @AllArgsConstructor 를 같이 적용시키면 @RequiredArgsConstructor 는 적용되지 않는다.

REFERENCE

https://goddaehee.tistory.com/95

https://hyoj.github.io/blog/java/basic/lombok/#allargsconstructor-requiredargsconstructor