본문 바로가기
백엔드개발자/SPRING, JPA 등...

@RestController, @ResponseBody, @Controller

by 보혀니 2022. 7. 24.

스프링 컨트롤러 어노테이션에는

@Controller, @RestController 가 있음

그 큰 차이점에는 HTTP Response Body가 생성되는 방식이다.

 

@Controller

Model객체를 만들어 데이터를 담고 View를 반환하기 위해 사용함

@ResponsBody 어노테이션을 함께 사용하면 View를 리턴하지 않고 Controller에서 직접 데이터 리턴이 가능 하다.

동작방식,  https://wckhg89.github.io/archivers/understanding_jackson

 

 

 

@RestController

=> @Controller + @ResponseBody 의 형태를 가지고 있음

반환하는 객체 데이터 타입은 JSON/XML 타입의 HTTP응답을 리턴한다. 

동작 방식, https://wckhg89.github.io/archivers/understanding_jackson

 

 

그렇다면 @RestController를 사용하면

@Controller + @ResponseBody를 사용할 필요가 없음.

 

 

 스프링부트는 @RestController를 사용한다면 기본적으로 JSON으로 매핑해서 내려주지만

스프링의 경우에는 리턴하려는 타입을 자동으로 컨버팅까지 해주지는 않음 !

라이브러리를 사용해서 해당 라이브러리에게 컨버팅을 위임하는 방식으로 진행해야 한다.

결론 : 스프링의 경우에는 jackson 라이브러리를 의존성으로 포함해준다면 자동으로 컨버터 역할을 하게 됨

 

참고: jacson 의 의존성은 크게 3가지를 가지고 있다

jackson-core, jackson-annotation, jackson-databind.

그런데 jackson-databind가 나머지 두 의존성을 포함하고 있으니 jackson-databind만 의존성 추가해주면 됨