이번 글은 새로운 실습을 하기위하여 보기 시작한 책을 공부하다가 정리를 해놓아야겠다 생각이 들어 작성을 하게 되었다.

이전 스프링 입문강의에서는 웹mvc를 구현하기위하여서 controller를 만들때 @Controller라는 어노테이션을 붙이고 시작하였는데 이곳에서는 @RestController라는 어노테이션을 붙이고 시작하였고 심지어 그에 따라 나오는 결과도 달랐다. 그리하여 이 두 가지의 차이에 대해서 알아보고자 한다.


1. @Controller

기본적으로 우리는 MVC패턴이라는 말을 이전에도 사용한 것처럼 Model, View, Controller라는 것의 줄임말이라는 것을 본 적이 있었다.

이전에 했었던 Controller를 만드는 실습에서는 model이라는 객체 안에 값을 넣어 View(화면)을 담당하는 html로 넘겨 나중에는 화면에 html에 작성된 화면이 출력되는 것을 볼 수 있었다.

여기서 중요한 것은 Controller는 View를 출력한다는 것이다!

2. @ResponseBody?

이 친구를 얘기하게 된것은 RestController와 연결되어있는 어노테이션이기때문에 일단은 알아보자.

View를 리턴하지 않고 컨트롤러에서 직접 데이터를 리턴할 수 있도록 하여준다.

이 친구 이전에 실습할때 API 형식으로 반환시켜줄때 사용하였던 친구이다. 이전 컨트롤러의 과정에서 View가 빠지게되었다.

3. @RestController

반면 RestController는 View를 출력하지 않고 바로 그냥 이전 API실습에서 본 것과 같이 객체를 반환하게 되면 Json형식으로 화면에 출력을 시키고 문자열을 출력시키면 바로 문자열을 출력을 시키게된다.
그림에서와 같이 @Controller + @ResponseBody의 역할을 @RestController가 한다는 것을 알 수 있었다.


결론:

@RestController: Json형식의 데이터로 바로 반환 @Controller: View반환

참고

김영한 - 스프링 입문 강의
https://doublesprogramming.tistory.com/105

profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글