롬복
롬복(Lombok)은 JDK에 포함된 표준 라이브러리는 아니지만 개발자들이 즐겨 쓰는 자동 코드 생성 라이브러리이다. 롬복은 레코드와 마찬가지로 DTO 클래스를 작성할 때 Getter, Setter, hashCode(), equals(), toString() 메서드를 자동 생성하기 때문에 작성할 코드의 양을 줄여 준다.
레코드와의 차이점은 필드가 final이 아니며, 값을 읽는 Getter는 getXxx(또는 isXxx)로, 값을 변경하는 Setter는 setXxx로 생성된다는 것이다.
* getXxx와 setXxx는 자바빈즈의 정식 Getter와 Setter이다.
이클립스에서 롬복을 사용하려면 설치 과정이 필요하다. 다음 URL로 가서 최신 버전의 롬복 설치 파일(lombok.jar)을 다운로드한다. 다운로드 위치는 이클립스 폴더의 dropins 디렉터리로 설정한다.
https://projectlombok.org/download
터미널에서 다운로드 받은 lombok.jar 파일이 있는 곳으로 이동해서 다음 명령어를 실행한다. 만약 'C:\Program Files'의 하위 디렉터리에 이클립스가 설치되어 있다면 관리자 권한이 필요하므로 명령 프롬프트를 실행할 때 관리자 권한으로 실행해야 한다.
java -jar lombok.jar
롬복이 실행되면 다음과 같은 창이 뜨게 된다. Install/Update를 클릭해 준다.

설치가 완료되면 롬복 기능을 인식하도록 이클립스를 재시작한다. 이클립스가 재시작되었다면, Package Explorer 뷰에서 자신의 프로젝트를 우클릭한 다음 [New] - [Folder]를 선택해 lib 폴더를 생성한다. 그리고 다운로드한 lombok.jar 파일을 lib 폴더로 복사한다. 마지막으로 프로젝트에서 lombok 라이브러리를 사용할 수 있도록 lombok.jar 파일을 우클릭하여 [Build Path] - [Add to Build Path]를 선택해 준다.

이제 롬복 라이브러리를 사용해 보자. 필드를 선언하고 class 선언 위에 @Data를 붙인다. @Data는 어노테이션이라고 하는데, 이것이 붙게 되면 컴파일 과정에서 기본 생성자와 함께 Getter, Setter, hashCode(), equals(), toString() 메서드가 자동 생성된다.
package ch11;
import lombok.Data;
@Data
public class Member {
private String id;
private String name;
private int age;
}
@Data 외에도 다양한 어노테이션을 사용할 수 있다.
| 어노테이션 | 설명 |
| @NoArgsConstructor | 기본(매개변수가 없는) 생성자 포함 |
| @AllArgsConstructor | 모든 필드를 초기화시키는 생성자 포함 |
| @RequireArgsConstructor | 기본적으로 매개변수가 없는 생성자 포함. 만약 final 또는 @NonNull이 붙은 필드가 있다면 이 필드만 초기화시키는 생성자 포함 |
| @Getter | Getter 메서드 포함 |
| @Setter | Setter 메서드 포함 |
| @EqualsAndHashCode | equals()와 hashCode() 메서드 포함 |
| @ToString | toString() 메서드 포함 |
@Data는 @RequireArgsConstructor, @Getter, @Setter, @EqualsAndHashCode, @ToString 어노테이션들이 합쳐진 것과 동일한 효과를 낸다.
final과 @NouNull의 차이점은 초기화된 final 필드는 변경할 수 없지만(Setter가 만들어지지 않음), @NonNull은 null이 아닌 다른 값으로 Setter를 통해 변경할 수 있다는 것이다.
'Language > JAVA' 카테고리의 다른 글
| [JAVA] 문자열 클래스 (1) | 2024.10.15 |
|---|---|
| [JAVA] System 클래스 (0) | 2024.10.15 |
| [JAVA] 레코드 선언 (0) | 2024.10.15 |
| [JAVA] Object 클래스 (0) | 2024.10.15 |
| [JAVA] java.base 모듈 (1) | 2024.10.15 |