1️⃣ @RestController: 데이터 응답 전용
▪️ @Controller ➕ @ResponseBody
👉🏻 즉, 모든 메서드에 기본적으로 @ResponseBody가 적용
▪️JSON, XML 등 데이터를 응답하는 데 사용.
▪️주로 REST API를 구현할 때 사용.
▪️HTML 페이지를 반환하지 않음.
@RestController
public class MyRestController {
@GetMapping("/api/data")
public String getData() {
return "Hello, JSON!";
}
}
// 응답: "Hello, JSON!" (JSON 형식으로 응답)
2️⃣ @Controller: 페이지 렌더링 전용
- HTML, JSP, Thymeleaf 같은 뷰(페이지)를 렌더링하는 데 사용.
- 템플릿 엔진(Thymeleaf, JSP 등)과 함께 사용하여 동적인 HTML 페이지를 생성.
- 데이터를 반환하려면 별도로 @ResponseBody를 추가해야 함.
➕뷰 리졸버(View Resolver)
- @Controller는 반환된 값을 뷰 이름으로 간주.
- 스프링은 이 값을 기반으로 템플릿 엔진을 호출해 페이지를 렌더링
@Controller
public class MyController {
@GetMapping("/page")
public String getPage(Model model) {
model.addAttribute("message", "Hello, Page!");
return "mypage"; // mypage.html 또는 mypage.jsp를 렌더링
}
}
//결과: mypage.html 템플릿이 렌더링되고, 템플릿에서 message를 사용할 수 있음.
항목 | @RestController | @Controller |
목적 | 데이터를 응답(JSON, XML 등) | HTML 페이지(뷰)를 반환 |
사용 사례 | REST API 개발 | 웹 애플리케이션 페이지 렌더링 |
기본 응답 방식 | JSON, XML (데이터 응답) | 뷰 이름(HTML 템플릿) 반환 |
@ResponseBody 필요 여부 | 자동 적용 | 필요 (@ResponseBody를 직접 추가해야 함) |
템플릿 엔진 사용 | 사용하지 않음 | Thymeleaf, JSP 등을 사용해 HTML 생성 |
'Spring' 카테고리의 다른 글
StringToStatusConverter (0) | 2025.05.10 |
---|