개발일지/일간회고 (TIL)
@Controller와 @RestController의 차이
윤승임
2022. 12. 21. 21:45
차이점
@Controller는 클래스를 Spring MVC 컨트롤러로 표시하는 데 사용되고,
@RestController는 RESTful 웹 서비스에서 사용되는 특수 컨트롤러이며 @Controller + @Response와 동일하다.
@RestController는 모든 메소드가 뷰 대신 객체로 작성된다.
@Controller는 @Component 주석이 달려있고,
@RestController는 @Controller와 @ResponseBody 주석이 달린 편의 컨트롤러이다.
지금 하고있는 프로젝트들은 view가 따로 마련되어있지 않아서 @Controller를 쓰면 오류가 났었었구나.
별생각 없이 @RestController로 바꿔서 진행했었는데 이번 포스팅으로 둘의 차이점과 MVC에 대해서도 조금 눈이 뜨이는 것 같다.
@Controller
Spring Framework에서 사용하는 어노테이션으로, 웹 애플리케이션에서 컨트롤러 클래스를 정의할 때 사용한다.
@Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 반환하는 것이다. (MVC)
@ResponseBody를 통해 @RestController처럼 객체 데이터를 반환할 수 있다.
@RestController
Spring Framework에서 사용하는 어노테이션으로, 웹 애플리케이션에서 컨트롤러 클래스를 정의할 때 사용한다.
단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아 전송한다.
@Controller와 @ResponseBody의 동작을 하나로 결합한 컨트롤러