getter, setter, toString, hasCode, equals, constructor 등을 자동으로 생성해준다.
해당 코드에 @RequiredArgsConstructor가 포함되어있다.
또한 @RequiredArgsConstructor는
Data 코드를 사용하여 상황에 따라 final 로 지정해주면
해당 final 필드에 대하여 생성자가 만들어진다.
그래서 이것을 활용하면 Dto에서
final로 지정한 필드를 만들어준 뒤 클래스 단계에서 @Data, @Builder를 적용하여 깔끔한 코드를 짤 수가있다.
롬복은 개발자의 노고를 줄여주는 것같다.
하지만 @RequestParam 같은 어노테이션은 생략이 가능해도 생략을 하지 않는 개발 습관을 가지는 것이 좋을 듯하다.
유틸리티 클래스에 적용하는 어노테이션이다.
기본 생성자가 private 으로 생성되며 만약 reflection 혹은 내부에서 생성자를 호출하게 되면 UnsupportedOperationException이 발생한다.
상태는 없고 행위만을 가진다.
하지만 객체지향적 프로그래밍이 아니고 절차지향적 프로그래밍에 가깝다.
또한 단위테스트를 어렵게 한다.
다른 클래스와 점점 강결합이 되려고 한다.
롬복의 @EqualsAndHashCode 를 넣으면 모든 필드를 사용해서 equals() , hashcode() 를 생성한다.
따라서 모든 필드의 값이 같다면 a.equals(b) 의 결과가 참이 된다.