어노테이션은 다른 프로그램에 유용한 정보를 제공하기 위해 사용되는 것으로 주석과 같은 의미를 갖게 됩니다.
@를 이용해서 작성하며, 해당 타겟에 대해 동작을 수행하는 프로그램 외 다른 프로그램에는 영향을 주지 않습니다!
어노테이션은 크게 세 가지로 구분되는데,
- 표준 어노테이션
- 메타 어노테이션 : 어노테이션을 정의하는데 사용
- 사용자 어노테이션
이 있다.
지난 세미나에서 배운 어노테이션 중 몇가지만 살펴봅시다!
객체와 테이블을 매핑하는 어노테이션입니다. 이 클래스는 JPA가 관리합니다. DB 테이블에 대응하는 하나의 클래스입니다.
JPA를 사용해서 DB 테이블과 매핑할 클래스는 해당 어노테이션을 꼭 붙여야만 매핑이 가능합니다.
@Controller와 다르게 @RestController는 리턴값에 자동으로 @ResponseBody가 붙게되어 별도 어노테이션을 명시해주지 않아도 HTTP ResponseBody에 자바 객체가 매핑되어 전달되게 됩니다.
이 어노테이션이 붙은 파라미터에는 HTTP Request의 Body가 그대로 전달됩니다. 일반적인 GET / POST 요청 파라미터에는 붙일 필요가 없습니다. 반면 xml이나 json 기반의 메세지를 사용하는 요청일 경우에는 이 방법이 유용합니다. HTTP 요청의 바디 내용을 통채로 자바 객체로 변환해서 매핑된 메소드 파라미터로 전달해줍니다.
자바 객체를 HTTP 요청의 바디내용으로 매핑하여 클라이언트로 전달합니다.
이 어노테이션이 붙은 파라미터가 있으면 HTTP 요청의 미디어 타입과 파라미터의 타입을 먼저 확인하게 됩니다. 처리할 수 있다면, HTTP 요청의 본문 부분을 통째로 변환해서 지정된 메소드 파라미터로 전달해 줍니다.
즉, @ResponseBody 어노테이션을 사용하면 HTTP 요청 바디를 자바 객체로 전달받을 수 있습니다.