본문 바로가기
IT_Developers/JAVA

Spring - @Controller, @RestController 차이

by 고코더 2022. 2. 23.

안녕하세요.

고코더 입니다.

스프링에서 대표적인 컨트롤러 어노테이션은 두 가지가 있습니다. @Controller와 @RestController입니다. 그런데 이 두 가지의 차이는 무엇일까요?

 

용도의 차이

 

@Controller는 MVC 패턴에서 View를 반환하는 역할을 해왔습니다. 대표적인 파일이 JSP와 HTML이 있습니다. 그런데 RestAPI라는 개발 방식이 유행을 타면서 데이터를 반환하는 @RestController를 사용하게 되었습니다. Spring 4.0부터 이 기능이 추가되었습니다.  아시다시피 그 데이터는 JSON이 주를 이루며 MessageConverter가 각 데이터 종류에 맞게 데이터를 반환합니다. 

 

정리하자면 

@Controller - View를 반환

@RestController - 데이터를 반환 그중에 Json이 대표적

 

@ResponseBody 여부 차이

@Controller + @ResponseBody =  @RestController

 

기존의 @Controller에서는 그렇다면 데이터를 반환할 수 없을까? 물론 있습니다. @ResponseBody를 사용하면 view를 찾아가는 게 아니라 데이터를 반환합니다. 아래에 소스는 동일한 작동을 합니다. 만약 스프링 4.0 이전 버전을 사용하신다면 @ResponseBody 어노테이션을 사용하지 않아도 되므로 좀 더 직관적으로 RestFull 개발을 이어나갈 수 있습니다. 

 

@Controller
@ResponseBody
public class Controller{

}

@RestController
public class Controller{
	
}

 

결국은 스프링의 편리성

결국은 가장 큰 특징은 @ResponseBody를 사용할 필요가 없이, 데이터를 반환할 수 있다는 장점입니다. 매우 친절한 스프링 개발자에게 언제나 봄을 선사합니다. 

댓글