1. 요약
| 항목 | @Controller | @RestController |
| 기본 목적 | HTML 뷰(View) 응답 | 순수 데이터(Data) 응답 |
| 구성 성분 | @Controller | @Controller + @ResponseBody |
| 반환 처리 | ViewResolver가 화면 렌더링 | HttpMessageConverter가 데이터 변환 |
| 반환 값의 의미 | 리턴된 String = 파일 경로/이름 | 리턴된 String = 문자열 데이터 그 자체 |
| 데이터 응답 시 | @ResponseBody 명시 필요 | 기본 적용 (생략 가능) |
2. 상호 변환
결국 두 어노테이션은 상호 보완적으로 동작할 수 있습니다.
@Controller로 데이터 보내기: * 메서드에 @ResponseBody를 붙이면 HttpMessageConverter가 동작하여 JSON/텍스트를 응답합니다.
@RestController로 화면 보여주기: * ModelAndView 객체를 반환하면 ViewResolver가 강제로 깨어나 지정된 뷰(JSP/HTML)를 찾습니다.
3. @ ResponseBody 리턴 방식
@ResponseBody가 활성화된 상태에서 리턴 타입에 따라 작업자가 달라집니다.
객체 반환 (User, Map, List 등): * MappingJackson2HttpMessageConverter가 호출되어 JSON으로 변환.
문자열 반환 (String): * StringHttpMessageConverter가 호출되어 **평문(Plain Text)**으로 전송.
'IT > JAVA&Spring' 카테고리의 다른 글
| JAVA 한글 깨짐 UTF-8 인코딩 문제 (0) | 2026.01.13 |
|---|---|
| JAVA String, StringBuffer, StringBuilder 설계와 성능 비교 (1) | 2026.01.13 |
| JAVA 프로젝트 빌드를 위한 Gradle 및 Maven 필수 명령어 가이드 (1) | 2026.01.05 |
| JAVA 환경(JDK) 프로젝트별로 다르게 설정하기 (0) | 2026.01.05 |
| spring boot 에서 RestTemplate / WebClient / OpenFeign 통해 외부 api http 통신하기 (0) | 2025.12.04 |