LOMBOK

자바 개발자라면 누구나 경험 했을 것이다. 간단한 Class 하나 만드는데 특히 VO, DTO, Entity등의 Class 만들 getter/setter 함수 등을 기계적으로 생성했어야 했던 귀찮은 작업들을.

 

1

2

3

4

5

6

7

8

9

public class inconvenientClass{

    private T a;

    public T getA () {

     return a;

    } 

    public void setA(T a) {

     this.a = a;

    }

}

cs

 

코드와 같이 단순히 변수 하나만 정의된 간단한 class이지만, 값을 핸들링 하기 위해 쓸데없이 작성해야 하는 코드가 많았다.

물론 IDE 자동생성 기능을 통해 쉽게 생성할 있지만, 여전히 변수 명이 변경되면 다시 getter/setter 함수를 변경해줘야 하는 번거로움이 발생한다. 이를 해결해 주기 나온 Lombok 이다. 간단하게 이해하면 Getter/Setter 자동 생성라이브러리라고 생각하면 된다. 물론 다양한 기능을 제공한다. 그럼 지금부터 하나씩 알아 가보자

Lombok이란?

Lombok 자바에서 @Getter, @Setter 같은 annotation 기반으로 관련 기존 DTO, VO, Domain Class 작성할 , 멤버 변수에 대한 Getter/Setter Method, Equals(), hashCode(), ToString() 멤버 변수에 값을 설정하는 생성자 등등을 자동으로 생성해 주는 라이브러리다.

먼저 Lombok 사용한 코드와 사용하지 않는 코드를 먼저 보자

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

public class BasicSampel {

    private Integer id;

    private String name;

 

    public Integer getId() {

        return id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    @Override

    public boolean equals(Object o) {

        if (this == o) return true;

        if (!(o instanceof LombokSampel)) return false;

 

        LombokSampel that = (LombokSampel) o;

 

        if (id != null ? !id.equals(that.id) : that.id != nullreturn false;

        return name != null ? name.equals(that.name) : that.name == null;

    }

 

    @Override

    public int hashCode() {

        int result = id != null ? id.hashCode() : 0;

        result = 31 * result + (name != null ? name.hashCode() : 0);

        return result;

    }

}

 

Colored by Color Scripter

cs

 

아래 코드는 Lombok 사용했다. 깜짝 놀랄 정도로 소스가 짧아졌다는 눈으로 확인할 있을 것이다.

 

1

2

3

4

5

6

7

8

9

import lombok.Data;

import lombok.Setter;

import lombok.EqualsAndHashCode;

 

@Data

public class LombokSampel {

    private Integer id;

    private String name;

}

Colored by Color Scripter

cs

 

샘플 코드를 통해 확인했듯이 Lombok 사용한 코드가 매우 짧아졌다. 필요한 곳에 적당한 Lombok Annotation 붙여 주기만 하면 끝이다. Annotation 문자 그대로 이해할 있을 정도로 매우 직관적이다. @Getter  getter() 함수를, @Setter setter() 함수를 생성하고 @EqualsAndHashCode  equals() 함수와 hashCode() 함수를 자동으로 생성해준다.

그럼 Lombok에서 제공해주는 Annotation 무엇이 있는지 알아보자.


'IT > Lombok' 카테고리의 다른 글

Lombok Annotation  (0) 2017.01.10

+ Recent posts