본문 바로가기

프로그래밍/Java

[Java] Lombok(롬복) 설치와 사용법 - getter/setter 빠르게 작성하기


Java 개발자라면 클래스 생성자, Getter와 Setter, 그리고 toString 메서드 등에 있어서만큼은

아마 조건반사적으로 작성을 하고 있을 것이다.

이를 조금이나마 편하게 작성할 수 있도록 해 주는 라이브러리 Lombok(롬복)에 대해

설치방법과 사용법을 소개하고자 한다.

 

<글의 순서>

1. Lombok이란

2. 설치하기

3. 초기 설정
4. 사용법

 

1. Lombok (롬복)이란

자바에서 사용되는 데이터 통신을 주고 받기위한 객체들(DTO, VO, ENTITY 등등)에 대해

getter/setter와 같은 정형화된 소스들을, 간단하게 어노테이션 추가만으로 작성해 주는 라이브러리이다.

 

 

2. 설치하기

https://projectlombok.org/

공식 사이트의 Download 페이지를 통해 lombok.jar 파일을 받고 실행한다.

아래 스크린 샷을 참고하여 설치하도록 한다.

첫 실행 시, IDE 정보를 찾을 수 없을때 알림이 표시된다.

 

[Specify location..]을 통해 IDE 경로를 설정해주고, [Install/Update]를 클릭한다.

 

설치가 완료됐다.

마지막 스크린샷처럼 설치가 완료된 후, 세 가지 사항을 잊지 말라고 한다.

① lombok.jar를 프로젝트에 추가하기

② IDE를 재시작 하기

③ 프로젝트 리빌드 하기

 

 

3. 초기 설정

① lombok.jar를 프로젝트에 추가하기

먼저 내 프로젝트에 라이브러리를 추가해야 한다.

현재, Maven 환경을 이용중이기 때문에 pom.xml에 lombok을 추가할 것이다.

공식 홈페이지를 참고하여 dependency를 추가한다.

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<scope>provided</scope>
	<version>1.18.12</version>
</dependency>

② IDE를 재시작 하기

사용 중인 IDE 툴을 종료하고 다시 시작한다.

 

③ 프로젝트 리빌드 하기

이클립스 Maven 프로젝트의 경우 [프로젝트 우클릭] → [Maven] → [Update Project...]를 이용한다.

 

 

4. 사용법

1) @Data

먼저 느낌부터 보기 위해 @Data 어노테이션을 이용해서 lombok 사용 전후 소스를 미리 본다.

 

<lombok 사용 전 소스>

package com.example.demo.dto;

public class Member {
	private Integer id;
	private String name;
	private Integer age;
	private String dept;

	public Member() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public Integer getAge() {
		return age;
	}
	
	public void setAge(Integer age) {
		this.age = age;
	}
	
	public String getDept() {
		return dept;
	}
	
	public void setDept(String dept) {
		this.dept = dept;
	}
	
	@Override
	public String toString() {
		return "Member [id=" + id + ", name=" + name + ", age=" + age + ", dept=" + dept + "]";
	}
}

 

(lombok 사용 후 소스)

package com.example.demo.dto;

import lombok.Data;

@Data
public class Member {
	private Integer id;
	private String name;
	private Integer age;
	private String dept;
}

 

놀랍도록 소스가 줄어들었다.

lombok으로 사용할 수 있는 @Data 어노테이션은 다음을 포함한다.

· getter/setter

· 기본 생성자

· toString()

 

만약 이클립스를 사용 중이라면 Outline 패널에서 어떤 코드가 포함되어 있는지 확인이 가능하다.

만약 @Data를 이용하여 한꺼번에 쓸 필요성이 없다면,

각각 따로 풀어쓰는 것도 가능하다.

@Getter/@Setter : getter와 setter
@NoArgsConstructor : 기본 생성자
@ToString : toString() 메서드

 

2) @AllArgsConstructor

@Data로는 파라미터를 가지지 않은 기본 생성자를 만든다.

하지만 모든 변수를 파라미터로 받는 생성자가 필요할 수 있다.

이 때에 @AllArgsConstructor을 사용한다.

(단, 이 경우 @Data가 자동 생성한 기본 생성자는 사라진다.

 양쪽을 모두 사용하고 싶다면 @NoArgsConstructor와 @AllArgsConstructor을 함께 사용해야한다.)

package com.example.demo.dto;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Member {
	private Integer id;
	private String name;
	private Integer age;
	private String dept;
}

모든 파라미터를 가진 생성자가 추가 되었다.

 

3) @NonNull

이 어노테이션을 지정한 변수에 null이 들어올 경우 NullPointerException이 발생한다.

단순히 Null인가 아닌가를 체크하는 로직을 따로 작성 해야하는 수고를 덜어준다.

public class Member {
	@NonNull private Integer id;
	private String name;
}

 

이상 소개한 어노테이션들 외에도 소스양을 꽤 줄여줄만한 다양한 어노테이션들을 제공하고 있다.

lombok 공식 문서를 확인하고 필요에 따라 사용해 보자.

 

<Lombok Document 링크↓>

https://projectlombok.org/features/all

 

 

🏆 마치며

과거 API 서버 유지보수 프로젝트에 참여했을 당시에는

새로운 API 개발에 들어가거나 보수 안건이 생길 때마다 어김없이 수많은 ENTITY와 VO 클래스의

생성자와 getter setter 지옥에서 허덕였던 기억이 있다.

IDE 편의기능으로 물론 쉽게 작성할 수 있는 환경은 마련되어 있으나,

변수가 많아질 수록 가독성도 떨어졌고 생각보다 시간이 꽤 소요되었다.

 

Lombok을 한 번 사용해보니 굉장히 유용하고 사용하기 쉬웠다.

앞으로 이 라이브러리는 어떤 Java 프로젝트에서든 필수로 써먹어 볼 수 있도록 해야겠다.