@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;
}

읽어주셔서 감사합니다.

 

레퍼런스
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기