출처 : https://gong-story.tistory.com/15
- @Getter / Setter
정보 가져오는 것
정보 수정하는 것
- @AllArgsContructor
모든 생성자를 파라미터를 받아야하는 생성자를 만든다.
생성자 주입

@NoArgsConstructor
매개변수(파라미터)가 없는 기본 생성자를 생성, 기본생성자 만들어줌

@NoArgsConstructor(access = AccessLevel.PROTECTED)
기본 생성자는 @Entity 에서 만들어주는 데도 어노테이션을 사용하는 이유는
@NoArgsConstructor(access = AccessLevel.PROTECTED) 와 같이
접근 제한을 하여 기본 생성자의 무분별한 생성을 막아서 의도하지 않은
엔티티를 만드는 것을 막을 수 있기 때문

위와 같이 파라미터가 없는 기본 생성자를 생성하게 되면 나머지 멤버변수들의 값들을 전달하기 위해 setter를 사용할 수 밖에 없고, setter를 이요하여 id와 nickname을 지정했지만 nickname을 set하지 않아 nickname을 가지지 않는 불완전한 객체가 만들어진다.

위와 같은 상황이 발생하더라도 임시로라도 userid를 닉네임으로 사용하게끔하여 불완전한 객체의 가능성을 차단한다.
출처 : https://oh-sh-2134.tistory.com/107
@RequiredArgsContructor
@AllArgsContructor / @NoArgsContructor 어노테이션과 다르게 final 키워드와 @NonNull 이 붙은 필드에 대한 생성자를 생성하는 역할 뿐만 아니라 의존성 주입(DI) 에도 영향을 미치게 됩니다.
@Data
: @Getter, @Setter, @ToString, @EqualsAndHashCode,
@RequiredArgsConstructor 모두를 자동으로 적용한다.
위에서 설명한 어노테이션 뿐만 아니라 다른 어노테이션도 포함하는 끝판왕
즉, Getter, Setter, AllArgsConstructor, NoArgsConstructor, RequiredArgsConstructor, toString, EqualsAndHashCode 어노테이션을 모두 합한 결정체입니다


출처 : https://ittrue.tistory.com/239
@Slf4j
Lombok 의 다른 기능들과 마찬가지로 개발자로 하여금 @Slf4j를 사용하기 위해 작성해야 하는 코드(Boilerplate code)를 생략할 수 있게끔 해준다.
@Slf4j 를 선언하는 경우, Lombok 으로 하여금 logger field를 작성하게 한다는 내용이 포함되어 있다.
