Java

롬복 (Lombok)

공부처음하는사람 2024. 7. 9. 23:05

 

롬복은 JDK의 표준 라이브러리는 아니지만 개발자들이 즐겨 쓰는 자동 코드 생성 라이브러리이다.

 

롬복은 레코드와 마찬가지로 DTO 클래스를 작성할 때 Getter, Setter, hasCode(), equals(), toString() 메소드를 

 

자동 생성하기 때문에 작성할 코드의 양을 줄여준다.

 

 

레코드와 차이는 필드가 final이 아니며, 값을 읽는 Getter는 getXxx(또는 isXxx)로, 값을 변경하는 Setter는 setXxx로 생성된다.

 

인텔리제이 환경에서는 플러그인에 자동으로 설치가 되어있으나, 현재 maven에 대한 개념이 없으므로

 

@RequiredArgsConstructor

 

어노테이션을 작성해 롬복을 프로젝트에 적용시켰다.

 

package ch12.sec03.ex05;

import lombok.Data;

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

 

필드를 선언하고 상단에 @Data 어노테이션을 붙였다.

@Data 어노테이션이 붙게 되면 컴파일 과정에서 기본 생성자와 함께 Getter, Setter, hasCode(), equals(), toString() 메소드가

자동 생성된다.

 

@Data 이외에도 다양한 어노테이션 사용이 가능하다

 

 

@Data 어노테이션은

@RequiredArgsConstructor, @Getter, @Setter, @EqualsAndHashCode, @ToString 어노테이션이 합쳐진것과 같다

 

 

package ch12.sec03.ex05;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Member {
    private String id;
    private String name;
    private int age;
}

 

@RequiredArgsConstructor는 기본적으로 매개변수가 없는 생성자를 포함시키지만, final 또는 @NonNull이 붙은 필드가 있다면

이 필드만 초기화 시키는 생성자를 포함시킨다.

 

package ch12.sec03.ex05;

import lombok.Data;
import lombok.NonNull;

@Data
public class Member {
    private String id;
    @NonNull private String name;
    private int age;
}

 

final과 @NonNull의 차이점

- 초기화된 final 필드는 변경할 수 없지만 (Setter가 만들어지지 않음) @NonNull은 null이 아닌 다른 값으로 Setter를 통해 변경가능

 

 

'Java' 카테고리의 다른 글

정규표현식  (0) 2024.07.10
래퍼 (wrapper) 클래스  (0) 2024.07.10
레코드 선언  (0) 2024.07.09
객체 문자정보 - toString()  (0) 2024.07.09
Object 클래스 / HashCode  (0) 2024.07.09