[Lombok] Data 와 UtilityClass

Coodori·2023년 3월 31일
0

CherishU

목록 보기
14/29

1.@Data

getter, setter, toString, hasCode, equals, constructor 등을 자동으로 생성해준다.
해당 코드에 @RequiredArgsConstructor가 포함되어있다.

또한 @RequiredArgsConstructor는

  • @NoArgsConstructor : 디폴트 생성자만 만들어준다.
  • @AllArgsConstructor : 모든 필드의 생성자를 만들어준다.

Data 코드를 사용하여 상황에 따라 final 로 지정해주면
해당 final 필드에 대하여 생성자가 만들어진다.

그래서 이것을 활용하면 Dto에서
final로 지정한 필드를 만들어준 뒤 클래스 단계에서 @Data, @Builder를 적용하여 깔끔한 코드를 짤 수가있다.

해당에 대하여

롬복은 개발자의 노고를 줄여주는 것같다.

하지만 @RequestParam 같은 어노테이션은 생략이 가능해도 생략을 하지 않는 개발 습관을 가지는 것이 좋을 듯하다.

2. @UtilityClass

유틸리티 클래스에 적용하는 어노테이션이다.
기본 생성자가 private 으로 생성되며 만약 reflection 혹은 내부에서 생성자를 호출하게 되면 UnsupportedOperationException이 발생한다.

Utility class

상태는 없고 행위만을 가진다.

하지만 객체지향적 프로그래밍이 아니고 절차지향적 프로그래밍에 가깝다.
또한 단위테스트를 어렵게 한다.
다른 클래스와 점점 강결합이 되려고 한다.

  • static Method
  • 상태 저장 X =>상수는 사용해도 괜찮다.
  • 인스턴트 X

3. @EqualsAndHashCode

롬복의 @EqualsAndHashCode 를 넣으면 모든 필드를 사용해서 equals() , hashcode() 를 생성한다.
따라서 모든 필드의 값이 같다면 a.equals(b) 의 결과가 참이 된다.

REFERENCE

https://developnote-blog.tistory.com/entry/Utility-Class

profile
https://coodori.notion.site/0b6587977c104158be520995523b7640

0개의 댓글