728x90
반응형
들어가기 전에
@Controller
는 전통적인 Spring controller로써 오래 사용되어졌습니다. Spring 4.0에서는 @RestController
라는 좀 더 RESTful한 웹서비스를 간단히 만들 수 있는 어노테이션이 소개되었습니다. 이번 포스팅을 통해 간단히 두 가지 어노테이션의 차이를 살펴보겠습니다.
Spring MVC @Controller
@Controller
어노테이션은 @Component
어노테이션을 가지고 있어 classpath 스캔을 통해 자동으로 구현체를 감지할 수 있습니다. 일반적으로 @Controller
는 @RequestMapping
어노테이션과 함께 많이 쓰입니다.
@Controller
@RequestMapping("books")
public class SimpleBookController {
@GetMapping("/{id}", produces = "application/json")
public @ResponseBody Book getBook(@PathVariable int id) {
return findBookById(id);
}
private Book findBookById(int id) {
// ...
}
}
- 위 소스코드를 보면, request의 응답에
@ResponseBody
어노테이션을 함께 붙여놓은 것을 볼 수 있습니다.@ResponseBody
어노테이션을 사용하면, 자동으로 응답 객체를HttpResponse
로 직렬화가 가능합니다.
Spring MVC @RestController
@RestController
는 @Controller
와 @ResponseBody
를 포함한 어노테이션으로 아래와 같이 사용됩니다.
@RestController
@RequestMapping("books-rest")
public class SimpleBookRestController {
@GetMapping("/{id}", produces = "application/json")
public Book getBook(@PathVariable int id) {
return findBookById(id);
}
private Book findBookById(int id) {
// ...
}
}
- 이미
@RestController
내에@ResponseBody
가 포함되어 있기 때문에 각 요청의 응답에@ResponseBody
를 붙여주지 않아도 자동으로 응답 객체를HttpResponse
로 직렬화가 됩니다.
참고 자료
728x90
반응형
'FRAMEWORK > Spring' 카테고리의 다른 글
[SpringBoot] SpringBoot를 이용한 email 전송하기(첨부파일 포함) (0) | 2021.12.20 |
---|---|
[SpringBoot 2.5↑] 빌드 시 2가지 jar가 생성되는 현상 (executable jar & plain jar) (4) | 2021.12.13 |
[SpringBoot] SpringBoot를 이용한 AWS S3에 resizing 이미지 업로드하기(Marvin 활용) (1) | 2021.12.04 |
[SpringBoot] SpringBoot를 이용한 AWS S3에 여러 파일 업로드 및 삭제 구현하기 (2) | 2021.10.29 |
[Querydsl, pageable] slice를 이용한 무한 스크롤 (0) | 2021.10.29 |