Lombok & record

서재·2023년 12월 14일
0
post-thumbnail

목표

Lombok의 특징 및 record와의 차이를 알아보자.

계기

Spring Boot에서 의존성 주입 시 Lombok 사용을 권장하는데,
보일러플레이트 코드를 생략하기 위함이라면 record를 활용해도 좋지 않을까 판단.
인스턴스 변수의 불변 여부 이외에 뭐가 다른 점이 있을지 알고 싶어짐.


보일러플레이트 코드

ex) 생성자, getter, setter, toString, equals, hashcode...

record

Java16 버전에서 등장
객체의 불변성을 보장
보일러플레이트 코드를 줄이기 위해 도입된 타입

롬복 (Lombok)

Java 프로그래밍 언어에서
보일러플레이트 코드를 줄이기 위해 고안된 라이브러리
뿐만 아니라 복잡하고 세밀한 제어를 돕는 다양한 어노테이션들이 존재

어노테이션기능
@Gettergetter 메소드 생성
@Settersetter 메소드 생성
@ToStringtoString 메소드 생성
@EqualsAndHashCodeequals, hashCode 메소드 생성
@Datagetter, setter, toString, equals, hashCode 메소드 생성
@NoArgsConstructor인자가 없는 생성자 생성
@AllArgsConstructor모든 필드를 인자로 하는 생성자 생성
@RequiredArgsConstructorfinal 또는 @NonNull 필드에 대한 생성자 생성
@SneakyThrows체크 예외를 런타임 예외로 변환
@Cleanup체크 예외를 런타임 예외로 변환
@SneakyThrows체크 예외를 런타임 예외로 변환

Lombok vs record

항목Lombokrecord
Java 최소 버전Java6Java16
추가 라이브러리 필요YESNO
어노테이션 명시 필요YESNO
인스턴스 변수의 가변성AbleUnable

결론

record는 주로 DTO, VO와 같은 단순한 불변 객체에 사용된다.

스레드 안전, 보안 등의 이유로, 객체는 불변 상태로 다루는 것이 좋다.
하지만 실제 개발 시에는 DB 내용의 변경 등의 이유로 가변 객체의 사용이 많아지게 된다.

보일러 플레이트 코드를 생략할 수 있다는 공통점은 가지지만,
Lombok은 이외에도 많은 기능들을 제공하며, record와도 결합하여 사용할 수 있다.

profile
입니다.

0개의 댓글

관련 채용 정보