david's daily developer note

[BE] Spring @Controller vs @RestController 본문

[Develop] Web/Back-end

[BE] Spring @Controller vs @RestController

mouse-david 2022. 7. 5. 22:00
728x90

Spring MVC의 컨트롤러 지정을 위하여 사용되는 @Controller 어노테이션과 @RestController의 차이를 알아보자.

Spring MVC에서 @Controller는 사용자 요청에 대한 응답으로 View를 반환하기 위한 로직의 처리를 담당한다.

@Controller
@ResponseBody
public class Controller {
	//logic
}

 

Spring MVC에서 View가 아닌 데이터를 반환하는 경우가 있는데, 이때는 @ResponseBody 어노테이션이 필요하고 이를 통하여 Json형태의 데이터를 반환할 수가 있다. 여기서 @RestController는 @Controller와 @ResponseBody가 결합된 어노테이션이며, @ResponseBody 어노테이션 없이도 문자열과 Json형태의 데이터를 반환할 수 있다.
@RestController는Spring Framwork 4.x버전부터 사용이 가능하다.

@RestController
public class RestController {
	//logic
}

차이점 정리
1. @Controller는 @Component의 Specialized version입니다.
2. @RestController는 @Controller의 Specialized version입니다.
3. @Controller는 Spring Web MVC의 View를 반환할 수 있으나, @RestController는 View를 반환할 수 없습니다.
4. @RestController는 @RequestMapping으로 선언된 함수가 @ResponseBody가 지정됨을 의미합니다.
5. @Controller는 모든 핸들러 메서드에 @ResponseBody가 필요하지만, @RestController는 @ResponseBody를 사용할 필요가 없습니다.
6. @Controller는 스프링 2.5버전에서 @RestController는 스프링 4.0버전에서 추가되었습니다.

728x90