본문 바로가기

Java/Spring

[Spring] @Controller / @ResponseBody / @RestController 를 알아보자

Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController 2가지가 있다.

@Controller와 @RestController의 주요한 차이점은 HTTP Response Body가 생성되는 방식이다.

※ @RestController는 @Controller와 @ResponseBody의 조합이다.

※ Spring 프레임 워크에서 RESTful 웹 서비스를 보다 쉽게 개발 할수 있도록 Spring 4.0에서 추가되었다.

 

 

[@Controller]

- @Controller는 Model 객체를 만들어 데이터를 담고 View를 반환하기 위해 사용한다.

- @ResponseBody를 사용하면 View를 리턴하지 않고 Controller에서 직접 데이터 리턴이 가능하다.

[Client(Request) -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet Client(Response)]

 

[@ResponseBody]

 - @ResponseBody는 주로 데이터를 반환하기 위해 사용한다.

 - @Controller와 다르게 View를 거치지 않고, Controller에서 직접 데이터를 리턴하는 것이 특징이다.

 - @ResponseBody는 각 메서드마다 작성해야 하는 번거로움이 있다.

[Client(Request) -> Dispatcher Servlet -> Handler Mapping -> Controller -> Dispatcher Servlet Client(Response)]

 

[@RestController]

 - @RestController = (@Controller + @ResponseBody) 형태

 - 반환되는 객체 데이터 타입 -> (JSON/XML 타입의 HTTP 응답을 직접 리턴)

 - 주로 데이터를 반환하기 위해 사용되며, @ResponseBody와 동일한 과정을 거친다.

[Client(Request) -> Dispatcher Servlet -> Handler Mapping -> Rest Controller -> Dispatcher Servlet Client(Response)]

 

 

[요약]

 - @ControllerView를 거치고, @RestControllerView를 거치지 않는다.

 - @Controller@ResponseBody를 붙이면 @RestController와 동일하게 작동한다.

'Java > Spring' 카테고리의 다른 글

[Spring] 의존성 주입(Dependency Injection)  (0) 2022.01.04
[Spring] Spring은 무엇인가  (0) 2022.01.04