개발일지/일간회고 (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의 동작을 하나로 결합한 컨트롤러