@Getter
@Setter
보이는 바와 같이 클래스 변수의 getter나 setter메소드를 자동으로 추가해준다.
@RequiredArgsContructor
요구된 요소의 생성자 생성
요구되었다 == final이 붙었다 이다.
@NoArgsContructor
빈 요소 생성자를 생성해 준다.
Spring에서 Bean을 주입받는 방식들 다음과 같이 있을 때
1) @Autowired
2) setter
3) 생성자
이중 가장 권장하는 방식이 생성자(Autowired는 권장하지 않는다한다. 왜인지 모르겠고 알기까지 얼마나 알아야할지 무섭다.)
생성자를 설정하지 않고 Required를 쓰는 이유는 의존성 관계가 변할때 마다 생성자 코드를 수정하는 번거로움을 피하기 위해서이다.
@Builder
생성자와 거의 동일한 역할을 하지만, 순서와 상관없이 정확하게 파라미터를 원하는 역할로 배정할 수 있다.
ex)
Posts.builder()
.title(title)
.content(content)
.author(author)
.build()
이처럼 모든 파라미터가 같은 타입일 때 순서가 변경되면 다른 속성에 값을 들어가는 것을 명시적으로 방지할 수 있다.