[기술정리] @Controller, @RestController

Stupefyee's avatar
Nov 22, 2024
[기술정리]  @Controller, @RestController

1. @Controller

  • 정의:
    • Spring MVC에서 컨트롤러 역할을 수행하는 클래스에 사용.
    • 주로 뷰(View) 반환을 위한 컨트롤러에 사용.
  • 특징:
    • HTML, JSP 같은 템플릿 엔진을 사용해 뷰를 반환.
    • 메서드가 반환하는 데이터는 기본적으로 뷰 이름으로 간주됨.
    • ModelAndView 또는 Model 객체를 사용해 데이터 전달 가능.
  • 예시 코드:
@Controller public class MyController { @GetMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello, World!"); return "hello"; // "hello.html" 뷰 렌더링 } }

2. @RestController

  • 정의:
    • @Controller와 @ResponseBody가 결합된 형태.
    • JSON/XML 데이터 반환을 위한 컨트롤러에 사용.
  • 특징:
    • 뷰가 아닌 데이터 자체를 반환.
    • API 서버 개발에 주로 사용.
    • 메서드 반환 값은 기본적으로 HTTP 응답 바디에 매핑됨.
  • 예시 코드:
@RestController public class MyRestController { @GetMapping("/api/hello") public String hello() { return "Hello, World!"; // JSON 형식의 응답 반환 } }

3. 주요 차이점

구분
@Controller
@RestController
사용 목적
뷰 반환 (HTML, JSP 등)
데이터 반환 (JSON, XML)
결과 처리 방식
뷰 이름을 반환
HTTP 응답 바디에 데이터 직접 반환
템플릿 엔진
사용 가능
사용하지 않음
결합된 어노테이션
없음
@ResponseBody 포함

4. 요약

  • @Controller
    • HTML/JSP 뷰를 렌더링하는 MVC 컨트롤러.
    • 템플릿 엔진과 함께 사용.
  • @RestController
    • API 서버에서 데이터(JSON/XML)를 반환하는 컨트롤러.
    • 뷰 없이 데이터만 처리.
Share article

stupefyee