안녕하세요.
고코더 입니다.
스프링에서 대표적인 컨트롤러 어노테이션은 두 가지가 있습니다. @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를 사용할 필요가 없이, 데이터를 반환할 수 있다는 장점입니다. 매우 친절한 스프링 개발자에게 언제나 봄을 선사합니다.
'IT_Developers > JAVA' 카테고리의 다른 글
Spring - GSON 추가하기 / 가장 많이 사용하는 버전은? (0) | 2022.02.24 |
---|---|
Spring - GSON 으로 직접 JSON 객체 만들기 / JsonObject() (0) | 2022.02.24 |
JAVA - 자바 API 문서 보는 방법 (0) | 2022.02.21 |
Spring Boot 1.x 버전은 사용하지 마세요! 지원 종료 (0) | 2022.02.17 |
JAVA - GSON , JSON-Simple, Jackson 무엇을 사용해야 할까? (0) | 2022.02.08 |
댓글