IT/JAVA&Spring

@Controller, @RestController

벼락쟁이 2026. 1. 12. 20:20

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)**으로 전송.