Dev/Spring

@RestController와 @Controller의 차이

Anews 2024. 10. 4. 16:10
@RestController
- @Controller 와 @ResponseBody 가 결합된 애노테이션이다.
- 주요 특징 :
                   1. 메서드가 반환하는 객체는 자동으로 JSON이나 XML 같은 형태로 직렬화되어 HTTP 응답 본문에 포함된다.
                   2. 주로 RESRful 웹 서비스에서 API를 만들 때 사용됩니다.
@RestController
public class MyRestController {

    @GetMapping("/greeting")
    public String greeting() {
        return "Hello, World!";
    }
}​
위 메서드는 단순 문자열 "Hello, World!"를 반환하지만, 클라이언트는 이를 JSON 형식으로 받게 된다. ("Hello, World!")

 

@Controller
- @Controller는 Spring MVC에서 뷰(view)를 반환하기 위해 사용됩니다.
- 주요 특징 :
                   1. 메서드가 반환하는 값은 보통 뷰의 이름이 됩니다. Spring은 이 뷰 이름을 기반으로
                       뷰 리졸버(View Resolver)를 통해 적절한 뷰(HTML, JSP 등)를 찾습니다.
                   2. @ResponseBody를 사용하지 않는 한, 메서드의 반환값은 HTTP 응답 본문이 아닌 뷰에 렌더링됩니다.
@Controller
public class MyController {

    @GetMapping("/home")
    public String greeting(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "home"; // "home"이라는 뷰 이름을 반환
    }
}​

 

이 경우 Spring은 home.jsp 또는 home.html 같은 뷰를 찾아서 렌더링하며, message 데이터를 뷰에 전달합니다.

 

차이점 요약
특징 @RestController @Controller
반환값 처리 반환된 객체를 JSON/XML로 변환하여
응답 본문에 포함
반환값은 뷰 이름으로 사용
(예: HTML, JSP, Thymeleaf)
주 용도 RESTful API 구축 웹 페이지 렌더링 (HTML/JSP)
자동 JSON 직렬화 지원
(@ResponseBody가 포함 이기에)
지원 안 함
(원하면 @ResponseBody 추가)
뷰 템플릿 엔진 사용 사용 안 함 사용
(예: HTML, JSP, Thymeleaf)

 

'Dev > Spring' 카테고리의 다른 글

DI와 IoC  (2) 2024.10.11
@GeneratedValue  (4) 2024.10.08
@Transactional  (2) 2024.10.07
Spring Dependency  (2) 2024.09.27
스프링부트 기본 포트 바꾸기  (0) 2024.09.12