@RestController = @ResponseBody + @Controller
@ResponseBody를 사용하면 viewResolver를 사용하지 않음.
일반 컨트롤러(뷰 템플릿 엔진 처리 방식 or 정적 컨텐츠 반환 방식)가 아니기 때문.
대신에, HttpMessageConverter가 작동.
HttpMessageConverter
- String 처리 : StringHttpMessageConverter
- 객체 -> JSON 처리 : MappingJackson2HttpMessageConverter
- byte 처리 등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음.
★ 클라이언트의 HTTP Accept header와 서버의 컨트롤러 반환 타입 정보를 조합해서
적절한 HttpMessageConverter가 선택된다.
@ResponseBody가 적용된 컨트롤러 함수에서 반환하는 String은
그대로 HTTP의 Body부분에 모두 포함되어 반환된다.
@ResponseBody를 사용하고, String이 아닌 객체를 반환하면,
객체가 JSON형태({필드명:필드값})로 변환되어 반환됨.
'Spring (Boot)' 카테고리의 다른 글
DI, IOC란? (0) | 2020.11.20 |
---|---|
AOP란? (0) | 2020.11.20 |
@RequestParam (0) | 2020.11.17 |
Spring Boot 정적(static) 컨텐츠 처리 방식 (0) | 2020.11.17 |
Spring Boot viewResolver (template engine 방식) (0) | 2020.11.17 |
댓글