inblog logo
|
stupefyee
    기술정리

    [기술정리] @Controller, @RestController

    Stupefyee's avatar
    Stupefyee
    Nov 22, 2024
    [기술정리]  @Controller, @RestController
    Contents
    1. @Controller2. @RestController3. 주요 차이점4. 요약

    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
    Contents
    1. @Controller2. @RestController3. 주요 차이점4. 요약

    stupefyee

    RSS·Powered by Inblog