@Component ::
개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용, Spring은 해당 Annotation을 보고 Spring의 Bean으로 등록
@ComponentScan ::
@Component와 @Service, @Repository, @Controller, @Configuration이 붙은 클래스 Bean들을 찾아 Context에 bean 등록을 할 떄 사용.
@Controller ::
Spring에게 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용
@RestController ::
View로 응답하지 않는 Controller임을 명시하기 위해 사용. view가 필요없는 API만 지원하는 서비스에서 사용한다.
@Service ::
비즈니스 로직을 수행하는 Class임을 명시하기 위해 사용
@Repository ::
DAO 클래스에 사용. 데이터베이스에 접근하는 메소더를 가지고 있는 클래스에서 사용한다.
@Autowired ::
Bean을 주입받기 위하여 사용. Type에 따라 알아서 Bean을 주입해주며 스프링이 자동적으로 값을 할당.
Controller 클래스에서 DAO나 Service에 관한 객체들을 주입 시킬 때 많이 사용
@Bean ::
개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 만들 때 사용
@RequestHeader ::
Request의 header값을 가져올 수 있으며, 해당 Annotation을 쓴 메소드의 파라미터에 사용
@RequestMapping ::
요청 URL을 어떤 method가 처리할지 맵핑해준다. Controller나 Controller의 메서드에 사용.
요청받는 형식을 정의하지 않으면 자동적으로 GET으로 설정된다.