쏭의 개발 블로그

@Controller와 @RestController 차이 본문

Back-end/Spring

@Controller와 @RestController 차이

songu1 2023. 10. 7. 16:44

💡요약

(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를 반환

www.facebook.com/photo/?fbid=1873079892846068&set=gm.3389524044492534

  • Controller가 view를 반환하기위해 View Resolver가 사용됨
  • ViewResolver 설정에 맞게 View를 찾아 렌더링

 

(2) Controller - Data

  • Spring MVC 컨트롤러에서도 Data를 반환해야하는 경우 존재 : @ResponseBody 사용
  • Controller가 JSON형태로 데이터 반환 가능

  1. 클라이언트는 URI형식으로 웹서비스에 요청을 보냄
  2. Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet 요청을 인터셉트
  3. @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형태로 객체 데이터를 반환

  1. 클라이언트는 URI형식으로 웹서비스에 요청을 보냄
  2. Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet 요청을 인터셉트
  3. 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