1. SpringBoot Annotation
- Java에서 Annotation이라는 기능이 있는데, 주석이라는 의미가 있지만, 주석이상의 기능을 지니고 있으며, Java Source Code에 추가하여 사용할 수 있는 Meta Data 의 일종임
- 단순 주석기능을 하는 것이 아닌, 특별한 기능을 사용 할 수 있음
- Class와 Method에 추가하여 다양한 기능을 부여하는 역할임
- Spring FrameWork는 해당 Class가 어떤 역할인지 정하거나?
- Bean을 주입하거나, 자동으로 Getter, Setter를 생성하기도 함
- 코드량이 감소하고 유지보수가 쉽고 생산성이 증가됨
2. SpringBoot Annotation 역할
- @Component
- 개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 Annotation임
- Spring의 Bean으로 등록함
- @ComponentScan
- SpringFrameWork는 @Component, @Service, @Repository, @Controller, @Configuration 중 1개라도 등록된 Class를 Finding하면 Context에 bean을 등록해줌
- Class의 하위 Bean을 등록 될 Class들을 Scan하여 Bean으로 등록을 해줌
- @Bean
- 개발자가 제어가 불가능한 외부 Library와 같은 것들을 Bean으로 만들 때 사용함
- @Controller
- Spring에 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용하는 Annotation임
- @RequestHeader
- Request의 header value를 가져올 수 있으며, Annotation을 쓴 Method의 Parameter에 사용됨
- @RequestMapping
- @RequestMapping(value = “”)와 같은 형태로 작성되며, Request가 들어오면 URI의 Request와 Annotation value 값이 일치한지 비교 후, 일치하면? 해당 Class나 Method가 실행됨
- Controller Object안의 Method와 Class에 적용이 가능함
- Class Unit에 사용하면 하위 Method에 모두 적용됨
- Method에 적용되면 해당 Method에서 지정한 방식으로 URI를 처리함
- @RequestParam
- URL에 전달되는 Parameter를 Method의 Pactor와 매칭시켜, Parameter를 받아서 처리할 수 있는 Annotation임
- Json type의 Body를 MessageConverter를 통해 Java Object로 Return시켜줌
- @RequestBody
- Body에 전달되는 Data를 Method의 Factor와 매칭시켜, Data를 받아서 처리할 수 있는 Annotation임
- Client가 보내는 HTTP 요청 본문(Json, XML)을 Java Object로 Return해줌
- @ModelAttribute
- Client가 전송하는 HTTP parameter, Body 내용을 Setter Function을 통해 1:1로 Object에 Data를 연결(Binding)함
- RequestBody와 다르게 HTTP Body내용은 multipart/form-data type을 요구함
- @RequestBody가 json을 받는 것과 달리 @ModenAttribute의 경우에는 json을 받아 처리 할 수 없음
- @ResponseBody
- Method에서 Return되는 Value가 View로 출력되지 않고 HTTP Response Body에 직접 쓰여지게 됨
- Return시 json, xml과 같은 Data를 Return함
- @Autowired
- Spring FrameWork에서 Bean Object를 주입받기 위한 방법임
- Bean을 주입받기 위하여 @Autowired를 사용함
- Spring FrameWork가 Class를 보고 Type에 맞게 Bean을 주입함[순서 → @Autowired → Constructor(@AllArgsConstructor) → Setter]
- @GetMapping
- RequestMapping(Method = RequestMethod.GET)과 똑같은 역할을 함