티스토리 뷰

이것저것

Lombok 사용법

토마's 2017. 3. 12. 21:28

안녕하세요. 오늘은 매번 프로젝트를 진행하면서 Domain, DTO, VO를 만들어서 Getter/Setter를 만들었어야 했는데,

그 일을 자동으로 해주는 Lombok에 대해서 포스팅 해보려고 합니다.

매번 Getter/Setter를 만들어 줘야 되는 것을 대신해 주기 때문에 불필요한 시간을 좀 더 절약할 수 있습니다.

 

우선, 설치법에 대해서 알려드리겠습니다. 설치는 직접 다운로드 받아서 설치하셔도 되고, 메이븐을 통해서 dependency를

추가해 주는 방법이 있습니다.

 

직접 다운로드 링크 : https://projectlombok.org/download.html

 

Maven Dependency 추가

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.14</version>
</dependency>

 

다운로드 받은 lombok.jar 파일을 실행해 보시면 다음과 같은 화면이 나옵니다.

 

 

그리고 나서 sts나 eclipse를 잡아주고 설치를 해주시면 다음과 같이 Install Successful이라는 말과 함께 설치가 끝나는 것을 확인할 수 있습니다.

 

 

그럼 lombok을 사용하기에 앞써 lombok에서 제공하는 어노테이션에 대해서 알아보겠습니다.

 

 @Data

모든 필드에 대한 getter, setter, toString,  equals, hashCode, final로 지정되어 있거나 @NonNull로 명시된 필드에 대한 값을 받는 생성자 메소드 코드를 생성한다.

 @Getter/@Setter

Getter와 Setter 함수를 생성한다. 일반적으로 get필드명, set필드명의 메소드가 생성된다.

접근 레벨을 지정해서 접근 레벨을 제한할 수 있다.

 - PUBLIC, PROTECTED, PACKAGE, PRIVATE 

   ex) Getter(AccessLevel.PUBLIC)

 @EqualsAndHashCode

코드에서 객체의 비교 등의 용도로 사용되는 equals(), hashCode() 메소드의 코드를 생성한다.

특정 필드는 제외할 수 있다.

  ex) EqualsAndHashCode(exclude={"VARIABLE1", "VARIABLE2"}) 

@ToString 

 객체의 내용을 문자열로 변환해주는 toString() 메소드를 생성한다. 특정 변수를 제외할 수 있다.

  ex) ToString(exclude={"VARIABLE1"})

 @Log

자동으로 logging을 위한 필드인 private static final Logger logger 를 추가해준다.

Log4j를 사용하여 출력해준다. 

@Slf4j 

자동으로 logging을 위한 필드인 private static final Logger logger 를 추가해준다.

Slf4j를 사용하여 출력해준다. 

@AllArgsConstructor 

모든 필드에 대한 값을 받는 생성자를 생성한다.

접근제어 : AccessLevel 지정을 통해서 접근레벨을 제한할 수 있다.

 

우선, 프로젝트 우 클릭 > Properties > Java Build Path > Libraries에서 Add External JARs를 눌러서 lombok.jar 파일을 추가해줍니다.

lombok에 사용하는 어노테이션에 대해서 알아보았고 적용된 코드는 아래와 같다.

 

import lombok.Data;
@Data 
public class LombokTest {
    private Integer id;
    private String name;
    private Integer phonenumber;
    private String address;
    private Integer postcode;
    private String content;
}

잘 적용된 것을 확인할 수 있습니다. 나머지 어노테이션도 상황에 맞게 사용하시면 불필요한 작업을 줄여줌으로써 코드를 짤 때,

조금 더 효율을 높여줄 것이라고 생각합니다. 이것으로 lombok에 대한 포스팅을 마치도록 하겠습니다.