@RestController
- @Controller 와 @ResponseBody 가 결합된 애노테이션이다.
- 주요 특징 :
1. 메서드가 반환하는 객체는 자동으로 JSON이나 XML 같은 형태로 직렬화되어 HTTP 응답 본문에 포함된다.
2. 주로 RESRful 웹 서비스에서 API를 만들 때 사용됩니다.
위 메서드는 단순 문자열 "Hello, World!"를 반환하지만, 클라이언트는 이를 JSON 형식으로 받게 된다. ("Hello, World!")@RestController public class MyRestController { @GetMapping("/greeting") public String greeting() { return "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 |