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