본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Boot

[Spring Boot] 예제로 Lombok 쉽게 이해하기

by 김코더 김주역 2021. 7. 22.
반응형

1. Lombok이란?

코드를 간소화 시켜주는 어노테이션들을 제공하는 라이브러리로, Lombok을 적절히 잘 활용하면 개발 시간을 많이 단축시킬 수 있다.

 

 

2. 예제

해당 예제는 Spring Boot에서 Gradle 프로젝트로 작성했다.

 

1) 목표

아래 소스 코드는 필자가 예시로 작성한 평범한 DTO이다.

이 긴 코드를 Lombok을 이용하여 리팩토링해 볼 것이다.

package com.example.demo.entity;

public class User {

    // 변수 선언
    private String id;
    private String password;
    private String name;
    private int age;

    // 생성자
    public User(String id, String password, String name, int age) {
        this.id = id;
        this.password = password;
        this.name = name;
        this.age = age;
    }

    // Getter, Setter
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // toString()
    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", password='" + password + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

 

2) 라이브러리 추가

Lombok을 사용하기 위해 build.gradle파일의 dependencies에 다음 두 줄을 추가해준다.

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

 

그러면 우측 상단에 다음 아이콘이 나오는데, 이 아이콘을 눌러 라이브러리를 로드해준다.

 

 

3) Annotation Processing 사용 설정

File -> Settings에 들어가서 Annotation Processors 메뉴로 들어간 후 "Enable annotation processing"을 체크한다.

Lombok은 어노테이션을 제공하는 라이브러리이므로 이 설정이 필요한 것이다.

 

 

4) 적용

4개의 어노테이션만으로 소스코드가 이렇게나 줄었다. Setter 메소드, Getter 메소드, 생성자, toString 메소드가 Lombok  어노테이션 한 줄로 모두 대체된 것이다.

package com.example.demo.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@AllArgsConstructor // 생성자가 모든 멤버 변수를 포함하도록 설정
@ToString
public class User {
    private String id;
    private String password;
    private String name;
    private int age;
}

 

반응형

댓글