
@Controller는 전통적인 MVC 패턴에서 View를 반환할 때 사용하는 어노테이션 입니다. 반환 값이 View 이름으로 해석되어 JSP, Thymeleaf 등 템플릿 엔진을 통해 HTML 응답을 생섭합니다. 만약, Json과 같은 형식으로 반환하기 위해선 @ResponseBody를 추가해야 합니다.
@RestController는 @ResponseBody와 @Controller의 조합 어노테이션입니다. View를 반환하지 않고 Json 형식을 반환하며 주로 REST API 구현에 사용됩니다.
@ResponseBody는 HttpMessageConverter를 통해 객체를 Json으로 변환하는 역할을 수행합니다. SpirngBoot의 경우 기본으로 MappingJackson2HttpMessageConverter를 등록하여 JSON을 변환하고 있습니다.