어노테이션(Annotation)
Spring에서는 어노테이션을 많이 사용합니다. 어노테이션이란 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 합니다. 어노테이션을 활용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 Getter나 Setter를 생성하기도 합니다.
Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부릅니다.
우리가 알던 기존의 Java Programming 에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성한 후에 사용했었습니다. 하지만 Spring에서는 직접 new를 이용하여 생성한 객체가 아니라, Spring에 의하여 관리당하는 자바 객체를 사용합니다.
Java에서 어노테이션의 역할으로는 사전상으로는 주석의 의미이지만 Java에서는 주석 이상의 기능을 가지고 있습니다. 어노테이션은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종입니다. 소스코드에 추가하면 단순 주석의 기능을 하는 것이 아니라 특별한 의미를 부여하거나 기능을 부여하는 등 다양한 역할을 수행할 수 있습니다.
대표적인 어노테이션
@Component
개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 즉, 스프링이 필요 시 자동으로 생성하는 클래스 목록에 추가하는 기능을 가진 어노테이션 입니다.
@Controller / RestController
Spring에게 해당 클래스가 Controller의 역할을 한다고 명시하기 위해 사용하는 어노테이션 입니다.
@RequestParam
URL에 전달되는 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있는 어노테이션으로 JSON 형식의 Body를 Java객체로 변환시킵니다.
@RequestBody
Body에 전달되는 데이터를 메소드의 인자와 매칭시켜, 데이터를 받아서 처리할 수 있는 어노테이션으로 클라이언트가 보내는 HTTP 요청 본문을 Java오브젝트로 변환합니다.
@GETMapping
Method = RequestMethod.GET과 같은 역할을 하는 어노테이션 입니다. (데이터를 받아온다.)
@POSTMapping
Method = RequestMethod.POST과 같은 역할을 하는 어노테이션 입니다. (데이터를 생성한다..)
@Setter
Setter method를 생성합니다.
@Getter
Getter method를 생성합니다.
@NoArgsConstructor
기본 생성자를 자동으로 추가해줍니다.