반응형
@RestController는 @Controller + @ResponseBody의 조합으로, 주로 JSON 형태의 데이터를 반환할 때 사용됩니다. 반면 @Controller는 주로 HTML 뷰를 반환하는 데 사용됩니다.
🧩 @Controller vs @RestController 차이점
항목 @Controller @RestController
| 주 용도 | 웹 페이지(HTML) 반환 | JSON, XML 등 데이터 반환 |
| 반환값 처리 | 뷰 리졸버(ViewResolver)가 처리 | @ResponseBody로 직접 HTTP 응답 본문에 출력 |
| 사용 예 | return "home"; → home.html 렌더링 | return user; → JSON 형태로 반환 |
| 주로 사용하는 곳 | MVC 기반 웹 애플리케이션 | RESTful API 서버 |
✅ 예시 코드 비교
1. @Controller 사용 예
@Controller
public class HomeController {
@GetMapping("/home")
public String home() {
return "home"; // templates/home.html 렌더링
}
}
2. @RestController 사용 예
@RestController
public class ApiController {
@GetMapping("/api/user")
public User getUser() {
return new User("홍길동", 30); // JSON으로 반환
}
}
💡 언제 어떤 걸 써야 할까?
- 웹 페이지를 렌더링해야 한다면 → @Controller
- 데이터(JSON/XML 등)를 반환해야 한다면 → @RestController
필요하다면
@Controller에
@ResponseBody를 메서드 단위로 붙여서 @RestController처럼 사용할 수도 있어요.
@Controller
public class ApiController {
@GetMapping("/api/user")
@ResponseBody
public User getUser() {
return new User("홍길동", 30);
}
}
728x90
반응형
'IT > 개발자 면접' 카테고리의 다른 글
| 단일 서버에서 JWT를 피해야 하는 이유 (0) | 2025.11.19 |
|---|---|
| JWT 장점과 단점 (0) | 2025.11.18 |
| Interceptor 와 Filter 비교 (0) | 2025.11.17 |
| Spring MVC Model (0) | 2023.12.17 |
| Spring Security 암호화 방식 (0) | 2023.12.16 |