본문 바로가기
Spring

[Spring] Lombok 라이브러리란?

by worldcenter 2024. 9. 25.

 

Lombok 라이브러리는 Getter/Setter, ToString과 같은 반복적인 자바 코드를 컴파일 할 때 자동으로 생성해주는 라이브러리 입니다.

Lombok 라이브러리는 설치하면 자동으로 사용할 수 있는 것은 아니고 IntelliJ나 Eclipse 내에서 사용 가능하도록 설정을 수정해주어야 합니다.

 

환경 정보

  • IntelliJ IDEA 2024.1.6
  • 맥북(M1)

 

Lombok 테스트

1. IntelliJ Settings > Plugins에서 Lombok 라이브러리가 설치되어 있는지 확인합니다. 설치가 안되어 있다면 설치를 진행해야 합니다.

 

2. Build, Execution, Deployment > Compiler > Annotation Processors 에서  "Enable annotation processing"checked 합니다.

 

3. 간단하게 Memo 클래스를 생성하고 gradle build 를 진행합니다.

package com.sparta.springprepare;

import lombok.Getter;

@Getter
public class Memo {
    private String username;
    private String contents;
}

 

4. gradle build가 성공적으로 진행됐다면(컴파일) 프로젝트 내 build > classes 하위에 존재하는 Memo 바이트코드 파일(.class)이 생성되고 자동으로 생성자와 Getter가 생성되어 있는 것을 확인해 볼 수 있습니다.

// Memo.class

package com.sparta.springprepare;

public class Memo {
    private String username;
    private String contents;

    public Memo() {
    }

    public String getUsername() {
        return this.username;
    }

    public String getContents() {
        return this.contents;
    }
}

 

5. @NoArgsConstructor 와 @AllArgsConstructor 어노테이션을 넣은 결과 값도 함께 살펴보겠습니다.

package com.sparta.springprepare;

import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Memo {
    private String username;
    private String contents;
}


// Memo.class
package com.sparta.springprepare;

public class Memo {
    private String username;
    private String contents;

    public String getUsername() {
        return this.username;
    }

    public String getContents() {
        return this.contents;
    }

    public void setUsername(final String username) {
        this.username = username;
    }

    public void setContents(final String contents) {
        this.contents = contents;
    }

    public Memo(final String username, final String contents) {
        this.username = username;
        this.contents = contents;
    }

    public Memo() {
    }
}

 

6. @RequiredArgsConstructor 은 final 필드를 인수로 받는 생성자를 만듭니다.

package com.sparta.springprepare;

import lombok.*;

@Getter
@Setter
@RequiredArgsConstructor
public class Memo {
    private final String username;
    private String contents;
}


// Memo.class
package com.sparta.springprepare;

public class Memo {
    private final String username;
    private String contents;

    public String getUsername() {
        return this.username;
    }

    public String getContents() {
        return this.contents;
    }

    public void setContents(final String contents) {
        this.contents = contents;
    }

    public Memo(final String username) {
        this.username = username;
    }
}

 

 

Lombok 라이브러리 annotation

어노테이션 설명
@Getter/Setter 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메서드 생성
@ToString toString() 메서드 생성
@ToString(exclude={"변수명"}) 원하지 않는 속성을 제외한 toString() 메서드 생성
@NonNull 해당 변수가 null 체크, NullPointerException 예외 발생
@EqualsAndHashCode eqauls()와 hashCode() 메서드 생성
@Builder Builder 패턴을 이용한 객체 생성
@NoArgsConstructor 파라미터가 없는 기본 생성자 생성
@AllArgsConstructor 모든 속성에 대한 생성자 생성
@RequiredArgsConstructor 초기화되지 않은 Final, @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성
@Log log 변수 자동 생성
@Value 불변(immutable) 클래스 생성
@Data @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합친 어노테이션

 

'Spring' 카테고리의 다른 글

[Spring] 3 Layer - Controller  (0) 2024.09.26
[Spring] Spring MVC  (0) 2024.09.26
[Spring] 테스트 코드  (0) 2024.09.25
[Spring] IntelliJ Spring 프로젝트 세팅  (1) 2024.09.25
[Spring] SpringFramework 알아보기  (0) 2024.07.30