Tags
- java_to_kotlin
- Docker
- EntityGraph
- 라즈베리파이
- 리믹스아이콘
- 전략패턴
- spring cloud contract
- 폰트어썸
- arc browser
- restcontroller
- 도커
- with jdk
- springboot
- Spring Cloud
- openapispec
- 라즈베리파이 클러스터
- fontawesome
- QueryDSL
- OneToMany
- Openjdk
- Spring
- restdocs
- oraclejdk
- Observer Pattern
- 옵저버패턴
- 디자인패턴
- kotlin
- 무료 아이콘 폰트
- remix icon
- java
Archives
- Today
- Total
< Dev-Kidult />
Spring에서 @Controller와 @RestController의 차이 본문
1. 소개
이 글에서는 Spring MVC에서 자주쓰게 되는 @Controller와 @RestController의 차이점을 알아보겠습니다.
먼저 @Controller 어노테이션은 스프링프로젝트의 컨트롤러에서 오랜기간 스프링프레임워크에서 사용되어져왔습니다
반면 @RestController는 4버전에서 도입이 되었습니다. @RestController 어노테이션은 Restful 웹서비스의 생산을 단순화 하기 위해서 만들어졌습니다.
@RestController에는 @Controller와 @RestController를 결합한 어노테이션이라고 보시면 됩니다.
2. Spring MVC @Controller 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Controller @RequestMapping("/user") class SimpleUserController { @GetMapping(value = "/{id}", produces = "application/json") public @ResponseBody User getUser(@PathVariable int id){ return getUserById(id); } public User getUserById(int id){ // ... } } | cs |
요청 처리 메소드는 @ResponseBody로 주석 처리 됩니다. 이 주석은 반환 객체를 HttpResponse로 자동 serialize합니다 .
3. Spring MVC @RestController 예제
@RestController는 @Controller 및 @ResponseBody 어노테이션이 포함되어 있으므로 컨트롤러 구현이 간단해집니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @RestController @RequestMapping("/user") class SimpleUserController { @GetMapping(value = "/{id}", produces = "application/json") public User getUser(@PathVariable int id){ return getUserById(id); } public User getUserById(int id){ // ... } } | cs |
이 컨트롤러는 @RestController어노테이션이 붙어서 @ResponseBody가 필요하지 않습니다.
컨트롤러 클래스의 모든 요청 처리 메소드는 반환객체를 HttpResponse로 자동으로 serialize합니다.
반응형
'개발 > Back-end' 카테고리의 다른 글
`Spring cloud contract` 를 배워보자 (0) | 2020.08.14 |
---|---|
JPA OneToMany EAGER 문제 및 해결방안 (0) | 2020.07.30 |
디자인 패턴 - 옵저버패턴(Observer pattern) with jdk (0) | 2019.07.11 |
디자인 패턴 - 전략패턴(Strategy pattern) (0) | 2019.06.29 |
Open JDK와 Oracle JDK의 차이점 (0) | 2018.10.10 |
Comments