1. @Controller
전통적인 Spring MVC Controller는 View 기술을 이용하여 화면을 리턴하는 방식이다.
json, xml형태의 객체를 반환하기 위해서는 @ResponseBody를 사용하여 json, xml형태의 객체를 리턴 할 수 있다.
@Controller의 workflow는 다음과 같다.
위 workflow의 순서를 간략히 설명하면 다음과 같다.
- Client는 URL로 서비스에 Request를 보낸다.
- 해당 요청을 처리할 수 있는 Handler를 찾아 Mapping 하기 위해 Dispatcher Servlet가 인터셉트 한다.
- Mapping 된 Handler가 존재하는 Controller에서 해당 요청을 처리하고, Model and View 객체를 반환한다.
- Dispatcher Servlet는 반환된 객체를 client에게 전달한다.
2. @RestController
View를 통해서 객체를 반환하지 않으며, 이 annotation을 통해 Controller에서 직접적으로 client에게 객체를 반환할 수 있게 되었다.
또한, 위 공식 문서의 첫 문장을 보면 다음과 같은 description이 있다.
"@RestController는 @Controller와 @ResponseBody가 annotated된 편리한 anntation이다." => @RestController = @Controller + @ResponseBody
즉, @ResponseBody의 성질에 의해서 HTTP응답에 대해 return 값을 자동으로 변환까지 해준다.
Workflow는 다음과 같다. 위 @Controller과 비교해보자.
3. 참고 문헌
- https://doublesprogramming.tistory.com/105
- https://minwan1.github.io/2017/10/08/2017-10-08-Spring-Container,Servlet-Container/
- https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Controller.html
- https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html
'IT > Java Spring' 카테고리의 다른 글
[Spring] 순차적 프로세스의 비동기식 프로세스로의 전환 삽질 (0) | 2020.10.14 |
---|---|
[HikariCP] Possibly consider using a shorter maxLifetime value (0) | 2020.08.12 |
[Spring] Factory Design Pattern (0) | 2020.08.06 |
[Spring] Servlet의 동작 과정과 메모리 적재 (0) | 2019.11.19 |
[Spring] Servlet과 web.xml의 관계 (0) | 2019.11.18 |