suyeonme

[Spring] Lombok 라이브러리란? 본문

프로그래밍👩🏻‍💻/Spring

[Spring] Lombok 라이브러리란?

suyeonme 2022. 5. 23. 22:27

1. Lombok이란?

자바 코드를 작성하다보면 반복적으로 작성하게되는 로직들이 있다. constructor, getter, setter등이 대표적인 예시이다. 이 때 롬복 라이브러리를 사용하여 반복되는 boilerplate 코드를  최소화하여 간결하고 편리하게 코드를 작성할 수 있다.

2. 설치하기

Gradle 환경에서 Lombok을 설치하는 방법은 아래와 같다. 

1. build.gradle에 롬복 라이브러리를 추가한다.

// build.gradle

configurations {
    compileOnly {
        extendsFrom annotationProcessor
} 
}

dependencies {
...
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'


2. IntelliJ의 메뉴의 Preference > Plugins > Lombok 검색후, Lombok이 enabled되어있는지 확인한다. (의존성 추가 외에 사용하는 IDE에서 플러그인을 설치해야한다. Lombok이 컴파일하는 시점에 소스 코드를 생성하기 때문에 컴파일 되지 않은 코드는 기본적으로 에러가 난다. 해당 플러그인을 설치하여 아직 컴파일되지 않은 소스 코드를 인식할 수 있다.)


3. IntelliJ의 메뉴의 Preference > Compiler > Annotation Processor 검색후, Enable annotation processing을 enabled 한다.

 

4. 설치 완료!

 

Annotation Processor란?

Java5 이상에서 지원하는 컴파일 옵션으로, 컴파일 단계에서 사용자가 정의한 annotaion의 코드를 분석하고 처리하는 hook이다. 컴파일 에러, 컴파일 경고, 소스 코드, 바이트 코드등을 내보낸다.

 

Lombok은 Annotation Processor로 만들어졌기 때문에, 컴파일 시점에 Annotation 기반으로 소스 코드를 생성한다.

 

3. Lombok의 Annotaion 사용하기

자주 사용하게 될 것같은 Annotaion 목록이다.

Annotaion Description
@ToString toString() 메소드를 생성
@Getter, @Setter Getter, Setter 생성
@EqualsAndHashCode equals(), hashCode() 메소드 생성
@RequiredArgsConstructor final 필드에 의존성 주입
@NonNull null-check 로직 생성 (값이 null이면 NullPointerException 예외 발생)
@Log logger 객체 생성 (log필드 생성 후 해당 클래스 이름으로 로거 객체 생성)
@CleanUp 자원 닫기 (I/O처리등을 할 경우, 자원을 close()해준다)
@Value 불변 객체 생성

 

예를들어, @RequiredArgsConstructor를 사용할 경우, 아래와 같이 코드를 작성할 수 있다.

// Lombok 미사용
public void MemberImpl {
    private final MemberRepository memberRepository;

    public MemberImpl(MemberRepository memberRepository) 
        this.memberRepository = memberRepository;
    }
}

// Lombok 사용
@RequiredArgsConstructor
public void MemberImpl {
    private final MemberRepository memberRepository;
}
Comments