쏭의 개발 블로그
@Controller와 @RestController 차이 본문
💡요약
(1) @Controller와 @RestController 차이점
⇒ HTTP Response Body가 생성되는 방식
(2) @RestController = @Controller + @ResponseBody
(3) 비교
[1] @Controller
Model 객체를 만들어 데이터를 담고 View를 반환하는 것
- 클래스를 Spring MVC 컨트롤러로 표시하는 데 사용됨
@Target(value=TYEP)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface Controller
동작구조
(1) Controller - View
- 클라이언트의 요청으로부터 view를 반환
- Controller가 view를 반환하기위해 View Resolver가 사용됨
- ViewResolver 설정에 맞게 View를 찾아 렌더링
(2) Controller - Data
- Spring MVC 컨트롤러에서도 Data를 반환해야하는 경우 존재 : @ResponseBody 사용
- Controller가 JSON형태로 데이터 반환 가능
- 클라이언트는 URI형식으로 웹서비스에 요청을 보냄
- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet 요청을 인터셉트
- @ResponseBody를 사용하여 클라이언트에게 JSON형태로 데이터를 반환
[2] @RestController
단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP응답에 담아 전송
- RESTful 웹서비스에서 사용되는 특수 컨트롤러
- @RestController = @Controler + @ResponseBody
@Controller
@ResponseBody
public class MVCController{
logic...
}
@RestController
public class ReftFulController{
logic...
}
- 모든 메소드가 뷰 대신 객체로 작성됨
@Target(value=TYEP)
@Retention(value=RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController
동작 구조
- JSON형태로 객체 데이터를 반환
- 클라이언트는 URI형식으로 웹서비스에 요청을 보냄
- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet 요청을 인터셉트
- RestController는 해당 요청을 처리하고 데이터를 반환
참고
https://dev-coco.tistory.com/84
[Spring] @Controller와 @RestController의 차이점 알아보기
@Controller 와 @RestController Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC 컨트롤러인 @Controller와 RESTful 웹 서비스의 컨트롤러인 @RestCont
dev-coco.tistory.com
'Back-end > Spring' 카테고리의 다른 글
Spring Boot와 Redis 연동 (+연동 시 고민사항) (0) | 2025.04.27 |
---|---|
WebFlux에 대해서 (0) | 2023.11.07 |
DAO, DTO, VO, Domain 차이 (0) | 2023.10.07 |
Spring AOP (0) | 2023.10.07 |
[Spring] Spring이란? (0) | 2023.02.07 |