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)]
[요약]
- @Controller는 View를 거치고, @RestController는 View를 거치지 않는다.
- @Controller에 @ResponseBody를 붙이면 @RestController와 동일하게 작동한다.
'Java > Spring' 카테고리의 다른 글
[Spring] 의존성 주입(Dependency Injection) (0) | 2022.01.04 |
---|---|
[Spring] Spring은 무엇인가 (0) | 2022.01.04 |