1. 근본적인 차이점

@Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 찾는 것.

@RestController는 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송.

 

@Controller와 @ResponseBody를 사용하여 만들 수 있지만 이러한 방식은 RESTful 웹서비스의 기본 동작이기 때문에 Spring은 @Controller와 @ResponseBody의 동작을 조합한 @RestController을 도입했습니다.

 

 

2. 코드로 이해하기!

  2-1) Controller를 사용할 경우의 객체 반환(Json/XML 데이터)

        -> @ResponseBody 어노테이션을 붙여줘야 객체 전송 가능

@Controller
public class PersonController {

    @ResponseBody
    @GetMapping("/myinfo")
    public Person getMyInfo(){
        Person p1 = new Person("길동이", 22, "서울", "개발자");
        return p1;
    }
}

  

  2-2) RestController를 사용할 경우의 객체 반환(Json/XML 데이터)

         -> @ResponseBody가 내장되어있다고 보면 됨

@RestController
public class PersonController {

    @GetMapping("/myinfo")
    public Person getMyInfo(){
        Person p1 = new Person("길동이", 22, "서울", "개발자");
        return p1;
    }
}

 

===========================================================================================

@ResponseBody -> BufferedWriter가 동작

@RequestBody -> BufferedReader가 동작

'프로그래밍 > SpringBoot' 카테고리의 다른 글

JPA (2) - 생성일자, 수정일자  (0) 2022.05.22
JPA (1) - 기본 개념 - Domain/Repository  (0) 2022.05.22
스프링 버전 GA/RC/M/SNAPSHOT의 의미  (0) 2022.05.21
그레들(Gradle)이란?  (0) 2022.05.21
RestController 란?  (0) 2022.05.21

+ Recent posts