-
[Java] Lombok 이란?Language/Java 2023. 10. 27. 12:34
📌 목차
- Lombok 이란?
- Lombok 사용법
- Lombok 장점 및 단점
📌 Lombok 이란 무엇인가?
Lombok 이란 Java의 Library 중 하나로 개발 시간과 에포트를 절약하고 가독성을 증가하기 위하여
표준 코드(반복되는 메소드 등)를 Annotation을 사용하여 최소화하거나 제거하는데 사용되는 라이브러리이다.
쉽게 말해 보통 DTO, Model, Entity 의 경우 여러 속성이 존재하고
이들이 가지는 프로퍼티에 대해서 Getter나 Setter, 생성자 등을 매번 작성해줘야 하는 경우가 있다.
Lombok은 이러한 부분을 Annotation 으로 사용함으로서 자동으로 만들어주는 라이브러리이다.
Lombok을 이용해서 작성한 코드는 컴파일 과정에서 Annotation을 이용해 코드를 생성하고 .class에 자동 컴파일 된다.
📌 Lombok 사용법
⚡ Lombok 라이브러리 추가
Project Lombok 의 홈페이지에 접속 후 Install / How to use 접속
아래 이미지와 같은 메뉴에서 자신 환경설정에 맞도록 라이브러리(플러그인, 아티펙트)를 추가한다.
⚡ Lombok 사용법 - 자주 사용하는 Annotation
• Getter / Setter
- 자주 사용하는 어노테이션으로 클래스 위에 적용시켜 사용 가능.
- 변수 이름 위에 적용시키면 해당 변수만 적용이 가능.
•ToString
- 적용시킨 클래스의 변수들을 기반으로 toString 메소드를 자동으로 완성시켜 줌.
- 출력을 원하지 않는 변수에 @ToString.Exclude 어노테이션을 붙여주면 출력을 제외할 수 있음.
- @ToString(callSuper=true) 를 통해 상위 클래스에 대해 toString을 적용시킬 수 있음.
•NoArgsConstructor / AllArgsConstructor / RequiredArgsConstructor
- NoArgsConstructor : 어떠한 변수도 사용하지 않는 기본 생성자를 생성.
- AllArgsConstructor : 클래스 내부의 모든 필드 값을 파라미터로 받는 생성자를 생성.
- RequiredArgsConstructor
: 특정 변수만을 활용하는 생성자를 생성.
생성자의 인자로 추가할 변수에 @NonNull 어노테이션 또는 final로 선언해서 의존성을 주입받을 수 있음.
•EqualsAndHashCode
- 클래스에 대한 equals 함수와 hashCode 함수를 자동으로 생성.
- @EqualsAndHashCode(of={"id", "name"})으로 설정하여 id 와 name 이 동일하다면 같은 객체로 인식하도록 해준다.
또한 상속받은 클래스가 있는 경우 상위 클래스를 적용시키지 않기 위해 callSuper=false 옵션을 사용할 수 있다.
•Data
- Getter / Setter / RequiredArgsConstructor / ToString / EqualsAndHashCode 를 자동으로 생성.
• Builder
- 해당 클래스의 객체의 생성에 Builder Pattern을 적용시켜준다.
- 모든 변수들에 대해 build 를 원하면 클래스 위에 @Builder 를 적용시키고,
특정 변수만을 build 를 원하면 생성자를 작성하고, 그 위에 @Builder 를 적용시킨다.
📌 Lombok 장점 및 단점
• 장점
- Annotation 기반의 코드 자동 생성으로 생산성 향상
- 코드 가독성 및 유지보수 편의성 향상
- Getter, Setter 등 자주 사용하는 Method 외에 Builder Pattern / Log 생성 등 다양한 활용 가능
• 단점
- 객체 간의 상호 참조 관계가 있을 때 Lombok이 toString() 메서드를 자동 생성할 때 무한 루프가 발생할 수 있음.
@ToStrign(exclude="fieldName") / @EqualsAndHashCode(exclude="fieldName") 으로 참조 객체를 제외하여 해결 가능.
📌 Reference
@웹 개발자의 발자취 - Lombok이란? Lombok 사용법
@개발자 코딩 노트 - [Java] Lombok 사용법
https://phantom.tistory.com/63
'Language > Java' 카테고리의 다른 글
[Java] Project 생성 및 구조 (0) 2023.02.01