
@Controller
스프링 MVC 패턴에 따라 응답 결과를 포함하여 View를 호출합니다.
DispatcherServlet -> Controller -> viewResolver -> view
// viewResolver가 members Page 호출 @GetMapping("/v1/members") public String getMembers(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; }
@ResponseBody
viewResolver를 호출하지 않고, HTTP 메시지 바디에 응답 결과를 반영합니다.
Dispatcher Servlet -> Rest Controller -> response

주 용도는 JSON/XML 형태로 객체 데이터를 반환하는 것이며
Spring 4.0부터는 @RestController (@Controller + @ResponseBody)를 지원하였습니다.
※ HTTP 메시지 바디 : HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
/* StringHttpMessageConverter 호출 members 문자열 리턴 */ @GetMapping("/v2/members") @ResponseBody public String getMembersV2(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } /* MappingJackson2HttpMessageConverter 호출 리턴타입이 객체의 경우 Json 변환 후 리턴 */ @GetMapping("/v3/member/{id}") @ResponseBody public MemberDto getMemberV3(@PathVariable("id") String id) { return new MemberDto(id, "Hello " + id); } @Data @AllArgsConstructor Public class MemberDto { private String memberId; private String name; }
읽어주셔서 감사합니다.
레퍼런스
반응형
최근댓글