Spring 어노테이션@ 간단설명모음

@RequestBody는 API호출시 넘겨주는 파라미터값(JSON등)을

JAVA오브젝트로 자동 변환해준다. (Controller기준 받는 입장)
  • 프론트앤드에서 Ajax요청시 JSON형식으로 값이 넘어오는데, 이 JSON형식을 받을때 사용하는 어노테이션이다.
  • 자동으로 자바객체로 바꿔준다.

@RequestParam은 외부API호출시 넘겨주는 파라미터값을 가져옴

- 외부API에서 name으로 넘긴 값을 String name에 저장함.

@Autowired는 빈(의존성)을 주입받기위해 사용.

- Autowired/생성자/setter 이렇게 총 3가지 방법으로 의존성을 주입받을 수 있다.

@Entity는 데이터베이스와 직접 연결된 클래스를 설정한다.

@PathVariable은 URL(경로)에서 변수를 추출하여 매개변수에 할당한다.

- 경로변수는 {id}로 둘러싸인 값을 의미한다.
- 주로 상세조회, 수정, 삭제 등의 작업에서 리소스 식별자로 사용된다.

@Generated는 개발자가 아닌, DB에서 기계적으로 생성한 클래스이다.

하이버네이트가 오브젝트를 대신 갱신한다.

@Builder는 빌더패턴을 완벽하게 지원해주는 어노테이션이다.

*빌더 패턴이란? : 생성자에 파라미터를 주입하여 생성하는것이 아닌, 별도의 Builder를 두어서 객체를 생성하는것을 말한다.
생성자가 없는경우 : 모든 맴버 변수를 파라미터로 받는 기본 생성자 생성
생성자가 있는 경우 : 따로 생성자를 생성하지 않음

@Data

@Getter/@Setter/@ToString/@EqualsAndHashCode/@RequiredArgsConstructor를 자동으로 적용시켜준다.

@RequiredArgsConstructor

@NonNull이나 final이 붙은 필드값 들에 대해 생성자를 자동으로 생성해준다. ( @Autowired를 사용하지 않고 의존성주입이 가능하다)
해당 어노테이션을 사용하면 클래스가 의존하고 있는 필드를 간단하게 초기화할 수 있다.

@AllArgsConstructor 는 모든 필드값을 파라미터로 받는 생성자를 생성해준다.

해당 어노테이션을 사용하면 클래스의 모든 필드값을 한 번에 초기화할 수 있다.

@NoArgsConstructor 는 파라미터가 없는 디폴트 생성자를 생성해준다.

해당 어노테이션을 사용하면 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.

개발자가 실수로 클래스의 필드 중 하나의 필드에 대한값 설정을 누락 시킬수도 있어, 객체는 불완전한 상태가 되어버린다.
이를 방지하고자 모든 필드값을 가지도록 강제하고 싶다면, AccessLevel.PROTECTED 속성을 부여해줘 해결할 수 있다.
다음과 같은 속성을 부여해주면, 기본 생성자의 접근 제어가되어 IDE단계에서 누락을 방지할 수 있다.

@EqualsAndHashCode는 equals와 hashCode를 자동으로 생성해준다.

- equals는 두 객체의 내용이 같은지, 동등성을 비교하는 연산자이다.
- hashcode는 두 객체가 같은 객체인지, 동일성을 비교하는 연산자 이다.