Lombok 이란?

이지민·2023년 2월 13일
0

Java Spring

목록 보기
1/1
post-thumbnail

자바로 코드를 작성하다 보면 getter, setter, toString 그리고 멤버변수에 대응하는 생성자와 같은 코드를 반복해서 작성하게 된다. 이러한 번거로움을 해소하기 위해 Eclipse나 Intellij와 같은 IDE에서 코드를 생성하는 기능을 제공을 하고 있다.

하지만 이 또한 매번 반복하기에 귀찮은 작업이다. 그리고 코드에서 매개변수에 대한 getter, setter, toString, 생성자들이 차지하는 양이 상당히 많아 정작 이 클래스의 핵심 로직을 찾기 어려워진다. 이러한 문제를 해결하기 위해 나온 것이 바로 Lombok (롬복)이다.

특히 Spring에서는 JPA로 DB를 다루기 위해서 다음과 같은 형태의 Entity를 구현할 일이 많다.

import java.sql.Timestamp;

import javax.persistence.*;

@Table (name ="course") 
@Entity()
public class CourseEntity {
	@Id
	@GeneratedValue(generator = "uuid2")
	@GenericGenerator(name = "uuid2", strategy = "uuid2")
	@Column(columnDefinition = "BINARY(16)")
	private String courseId;

	@Column(nullable = false, unique = true, length = 32)
	private String name;
    
    public CourseEntity(String courseId, String name) {
		super();
		this.courseId = courseId;
		this.name = name;
	}
    
    public String getCourseId() {
		return courseId;
	}
    
	public String getName() {
		return name;
	}

롬복을 사용하면 다음과 같이 코드를 작성할 수 있다.

import lombok.*;

import java.sql.Timestamp;

import javax.persistence.*;

import org.hibernate.annotations.GenericGenerator;

@Getter(AccessLevel.PUBLIC)
@AllArgsConstructor
@Table (name ="course") 
@Entity()
public class CourseEntity {
	@Id
	@GeneratedValue(generator = "uuid2")
	@GenericGenerator(name = "uuid2", strategy = "uuid2")
	@Column(columnDefinition = "BINARY(16)")
	private String courseId;

	@Column(nullable = false, unique = true, length = 32)
	private String name;

각 매개변수에 대한 getter는 @Getter 어노테이션으로 모든 매개변수에 대한 생성자는 @AllArgsConstructor로 대체할 수 있다. 덕분에 CourseEntity가 가지고 있는 매개변수가 무엇인지 한눈에 들어오게 된다.

롬복의 장점

  • getter, setter, toString 그리고 멤버변수에 대응하는 생성자와 같은 코드를 반복해서 작성하는 번거로움을 줄여주어 코드 생산성이 높아진다.
  • 핵심 로직만 코드에 남아 가독성을 높이고 유지보수성이 높아진다.

설치하기

자세한 설치 방법은 공식 홈페이지 (https://projectlombok.org/) 참고하길 바란다.

Maven

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

롬복은 어노테이션을 통해 여러 Getter와 Setter와 같은 코드를 대체해주는데 이런 코드들은 컴파일 과정에서 롬복이 코드를 자동으로 생성해서 넣어준다. 그러다 보니 Eclipse나 Intellij와 같은 IDE에서 코드를 작성하는 시점에서는 Getter와 Setter와 같은 코드가 없어 자동완성이 안된다. 따라서 자동완성 기능을 사용하기 위해서는 별도의 설정이 필요하다.

Mac

$ cd /Users/[사용자 계정]/.m2/repository/org/projectlombok/lombok/1.18.24/
$ java -jar lombok-1.18.24.jar

롬복 jar 파일을 실행하면 아래와 같은 화면이 나오고 롬복을 적용하고자 하는 IDE를 선택하여 설치해주면 된다.

Features

이 글에서는 Getter, Setter, 생성자를 롬복으로 대체하는 방법에 대해서만 소개 했지만 롬복은 그 밖에도 로거 생성, 빌더 패턴 등 코드 작성 편의를 위한 다양한 어노테이션을 제공하고 있다.

롬복이 어떤 기능들이 있는지는 공식 홈페이지의 Features (https://projectlombok.org/features/)를 참고하면 된다.

profile
개발하는 사람입니다.

0개의 댓글