주석 @ RestController 와 @ Controller 의 차이 점

RESTful API 를 개발 할 때 보통 Controller 에 @ Controller 주 해 를 붙 입 니 다. 그런데 가끔 은 @ RestController 를 붙 입 니 다. 동료 가 왜 냐 고 물 었 을 때 저도 어리둥절 한 표정 으로 묵묵히 자 료 를 보고 차이 점 을 말씀 드 리 겠 습 니 다.
@ RestController 주 해 는 @ ResponseBody + @ Controller 와 같 습 니 다. @RestController 와 @ Controller 의 공통점 은 Spring 의 특정한 클래스 가 HTTP 요청 을 받 아들 일 수 있 는 지 를 나타 내 는 데 사 용 됩 니 다. 두 가지 차이 점 은 @ RestController 는 지정 한 페이지 로 돌아 갈 수 없고 @ Controller 는 가능 합 니 다.전 자 는 데 이 터 를 직접 되 돌려 줄 수 있 고 후 자 는 @ Response Body 보조 가 필요 합 니 다.아래 상세 분석.
① 페이지 로 돌아 갈 수 있 는 지 여부
답: @ RestController 는 지정 한 페이지 로 돌아 갈 수 없고 @ Controller 는 가능 합 니 다.해석: Controller 에 대해 @ RestController 주석 만 사용 하면 지정 한 페이지 로 돌아 갈 수 없습니다. 이 때 설 정 된 보기 해석 기 Internal ResourceView Resolver 는 작 동 하지 않 습 니 다. 돌아 오 는 내용 은 return 의 내용 입 니 다.지정 한 페이지 로 돌아 가 려 면 @ Controller 와 보기 해석 기 Internal ResourceView Resolver 를 사용 해 야 합 니 다.② 내용 을 되 돌려 주 려 면 JSON, XML 또는 사용자 정의 mediaType 내용 을 페이지 로 되 돌려 야 합 니 다. @ RestController 는 스스로 해결 할 수 있 습 니 다. 이 주 해 는 데 이 터 를 되 돌려 주 는 데 편리 합 니 다. 대상 의 실 체 를 JSON 형식 으로 자동 으로 변환 하기 때 문 입 니 다.@ Controller 는 대응 하 는 방법 에 @ Response Body 주 해 를 붙 여야 합 니 다.
예시:
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/difference")
public class DifferenceController {

    //           
    @RequestMapping(value = "/goToSuccessPage", method = RequestMethod.GET)
    public String goToSuccessPage() {
        //         success.html
        return "success";
    }

    @RequestMapping(value = "findAll", method = RequestMethod.GET)
    public Map findAll() {
        Map all = new HashMap<>();
        all.put("remark", "    json,xml    mediaType     ");
        return all;
    }
}

좋은 웹페이지 즐겨찾기