Lombok의 특징 및 record와의 차이를 알아보자.
Spring Boot에서 의존성 주입 시 Lombok 사용을 권장하는데,
보일러플레이트 코드를 생략하기 위함이라면 record를 활용해도 좋지 않을까 판단.
인스턴스 변수의 불변 여부 이외에 뭐가 다른 점이 있을지 알고 싶어짐.
ex) 생성자, getter, setter, toString, equals, hashcode...
Java16 버전에서 등장
객체의 불변성을 보장
보일러플레이트 코드를 줄이기 위해 도입된 타입
Java 프로그래밍 언어에서
보일러플레이트 코드를 줄이기 위해 고안된 라이브러리
뿐만 아니라 복잡하고 세밀한 제어를 돕는 다양한 어노테이션들이 존재
어노테이션 | 기능 |
---|---|
@Getter | getter 메소드 생성 |
@Setter | setter 메소드 생성 |
@ToString | toString 메소드 생성 |
@EqualsAndHashCode | equals, hashCode 메소드 생성 |
@Data | getter, setter, toString, equals, hashCode 메소드 생성 |
@NoArgsConstructor | 인자가 없는 생성자 생성 |
@AllArgsConstructor | 모든 필드를 인자로 하는 생성자 생성 |
@RequiredArgsConstructor | final 또는 @NonNull 필드에 대한 생성자 생성 |
@SneakyThrows | 체크 예외를 런타임 예외로 변환 |
@Cleanup | 체크 예외를 런타임 예외로 변환 |
@SneakyThrows | 체크 예외를 런타임 예외로 변환 |
항목 | Lombok | record |
---|---|---|
Java 최소 버전 | Java6 | Java16 |
추가 라이브러리 필요 | YES | NO |
어노테이션 명시 필요 | YES | NO |
인스턴스 변수의 가변성 | Able | Unable |
record는 주로 DTO
, VO
와 같은 단순한 불변 객체에 사용된다.
스레드 안전
, 보안
등의 이유로, 객체는 불변 상태로 다루는 것이 좋다.
하지만 실제 개발 시에는 DB 내용의 변경 등의 이유로 가변 객체의 사용이 많아지게 된다.
보일러 플레이트 코드를 생략할 수 있다는 공통점은 가지지만,
Lombok은 이외에도 많은 기능들을 제공하며, record와도 결합하여 사용할 수 있다.