@Getter / @Setter - 특정 필드 위에서 어노테이션을 붙여주면, 자동으로 생성된 접근자와 설정자 메소드를 사용할 클래스 위에 붙여주는 경우에는 모든 필드에 접근자와 설정자가 자동으로 생성된다.
@NoArgsConstructor - 파라미터가 없는 기본 생성자를 생성한다.
@AllArgsConstructor - 필드 값을 모두 포함한 생성자를 생성해준다.
@RequiredArgsConstructor - final필드와 @NonNull 어노테이션이 붙은 필드에 대한 생성자를 생성하여 특정 변수만을 활용하는 생성자를 생성해준다.
@ToString - 필드를 기반으로 ToString 메서드를 자동생성하며, 클래스명(필드 1 이름 = 필드 1 값, 필드 2 이름 = 필드 2 값)으로 출력된다. @ToString(exclude=”필드명”)을 사용하여 원하지 않는 필드는 제외 할 수 있다.
@EqualsAndHashCode - Equals와 hashCode 메소드를 자동으로 생성해주며, callSuper를 사용해서 메소드 자동 생성 시 부모 클래스의 필드까지 고려 할 것인지를 설정 할 수 있다.
@Data - @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한 번에 생성해준다.
@ControllerAdvice - 모든 컨트롤러 전반에 걸쳐 부가적인 동작(예외처리, 바인딩 모델, 모델 객체 적용)을 해주고 싶은 경우에 사용할 수 있는 어노테이션이다.
@ExceptionHandler - @Controller나 @RestController가 적용된 Bean 내부에서 발생하는 특정 예외를 하나의 메서드에서 처리해주기 위한 어노테이션