개발 낙서장

Lombok - 롬복 본문

Java

Lombok - 롬복

권승준 2024. 1. 18. 11:04

기존 코드 방식

기존에는 변수를 private로 선언하고 외부 클래스에서 사용하려면 Getter, Setter 메소드를 따로 만들어주어야 한다.

생성자 또한 조건에 맞게 만들어주어야 한다.

윈도우 기준 Alt + Insert를 눌러 간편하게 생성할 수 있다

package com.sparta.springprepare.memo;

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

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

    public String getUsername() {
        return username;
    }

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

    public String getContents() {
        return contents;
    }

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

class Main {
    public static void main(String[] args) {
        Memo memo = new Memo("가나다", "내용");
        System.out.println(memo.getUsername() + " " + memo.getContents());
        memo.setUsername("가나다라");
        memo.setContents("수정");
        System.out.println(memo.getUsername() + " " + memo.getContents());
    }
}

이렇게 각 변수에 맞게 Getter와 Setter를 만들어야 외부 클래스에서 사용할 수 있다.

지금이야 변수가 단 두 개 뿐이니까 한 눈에 보이지만 변수가 50개 100개가 된다면 그리고 일일히 Getter나 Setter를 만들어줘야 한다면 아주 어지러워질 것이다.

SpringBoot에는 이러한 Getter, Setter, 생성자 등 반복되는 코드들을 자동으로 생성해주는 롬복이라는 플러그인이 있다.

설정 방법

IntelliJ에서 윈도우 기준 Ctrl + Alt + S를 눌러 Settings 창에 Annotation을 검색해 활성화해준다

이후 Shift를 두 번 눌러 Plugins을 연 다음 설치된 플러그인을 보면 Lombok이 설치된 것을 확인할 수 있다.
설치가 되지 않았다면 Install을 눌러 설치를 해주자.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

gradle 설정 파일에도 lombok을 추가해주자.

사용 방법

롬복은 클래스 위에 @속성 을 추가해 사용할 수 있다.

롬복의 플러그인 설명에 이렇게 사용할 수 있는 속성들이 나열돼있는데 시간날 때 읽어보면 좋을 것 같다.

일단 예시 코드인 Memo 클래스를 수정해보자.

import lombok.Getter;
import lombok.Setter;

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

@Getter는 필드들의 Getter를, @Setter는 필드들의 Setter를 자동으로 추가해주는 속성이다.

그럼 이렇게 실제 클래스에는 Getter와 Setter가 없지만 외부 클래스에서 사용할 때 빨간 줄이 뜨지 않는 것을 확인할 수 있다.
왜 이렇게 되는 건지 빌드를 해서 빌드 파일을 확인하면 알 수 있다.

분명 실제 클래스에서는 만들지 않았던 Getter와 Setter가 빌드할 때는 자동으로 생성되는 것을 확인할 수 있다.

Alt+Insert로 자동 생성하는 기능도 굉장히 편리했지만 롬복을 사용하면 코드 가독성과 유지보수성이 높아져 훨씬 더 좋은 것 같다.

'Java' 카테고리의 다른 글

데이터베이스(DB, DataBase)  (0) 2024.02.13
[Spring] Filter 예외 처리  (0) 2024.02.05
[Spring] 쿠키와 세션  (0) 2024.01.25
Jackson  (0) 2024.01.18
Spring MVC  (0) 2024.01.18
Comments