728x90
@Controller와 @RestController는 Spring MVC에서 사용되는 어노테이션이며, 주로 클라이언트로부터의 HTTP 요청을 처리하는 역할을 합니다. 이 둘의 차이는 데이터 응답 방식과 용도에서 나타납니다.
1. @Controller
- 주 목적: @Controller는 주로 **뷰(View)**를 반환하기 위해 사용됩니다. JSP, Thymeleaf 같은 템플릿을 이용하여 HTML 페이지를 생성하고 이를 클라이언트에게 반환할 때 사용됩니다.
- 작동 방식: 메서드에서 반환된 값은 ViewResolver를 통해 해당 뷰 템플릿을 찾아 렌더링합니다. 그 후, 뷰를 클라이언트에게 반환합니다.
- 주 용도: 서버 측 렌더링을 이용해 HTML 페이지를 클라이언트에게 제공할 때 유용합니다.
@Controller
public class MyController {
@GetMapping("/welcome")
public String welcome() {
// welcome.html과 같은 뷰 이름을 반환
return "welcome";
}
}
- 위의 예제에서 "welcome"은 뷰 이름이며, Spring의 ViewResolver가 "welcome.html"과 같은 HTML 파일을 찾아 클라이언트에게 반환합니다.
2. @RestController
- 주 목적: @RestController는 REST API를 만들 때 사용됩니다. 이 어노테이션은 JSON 또는 XML 등의 데이터를 반환하는 데 중점을 둡니다. 이는 API를 통해 데이터를 주고받는 RESTful 웹 서비스에 유용합니다.
- 작동 방식: @RestController는 자동으로 메서드의 반환값을 JSON 또는 XML 형식으로 직렬화하여 클라이언트에게 반환합니다. 별도로 @ResponseBody를 명시할 필요 없이 데이터 자체가 반환됩니다.
- 주 용도: 클라이언트에게 JSON 데이터를 반환해야 하는 API 서비스나, 프론트엔드와 백엔드가 데이터를 주고받는 SPA(single-page application)에서 많이 사용됩니다.
@RestController
public class MyRestController {
@GetMapping("/api/welcome")
public String welcome() {
// 단순한 문자열 데이터가 JSON 형식으로 반환됨
return "Welcome to the API";
}
}
- 위의 예제에서는 @RestController를 사용하여 문자열 "Welcome to the API"가 JSON 형식으로 클라이언트에게 반환됩니다.
3. 차이점 요약
- @Controller: 주로 **뷰(HTML 페이지)**를 반환합니다. 템플릿 엔진을 사용하여 HTML 페이지를 생성해 클라이언트에게 응답합니다.
- @RestController: 주로 JSON 또는 XML과 같은 데이터를 반환합니다. @ResponseBody가 자동으로 포함되어 있어 데이터 응답에 최적화되어 있습니다.
두 어노테이션 모두 컨트롤러 클래스에서 요청을 처리하는 데 사용되지만, @Controller는 서버 측 렌더링(HTML)을, @RestController는 데이터 반환(JSON/XML) 방식을 주로 담당합니다.
728x90
'프로그래밍 > Java' 카테고리의 다른 글
List와 ArrayList의 개념과 차이 (0) | 2024.10.25 |
---|---|
Dependency injection(DI)란? (0) | 2024.10.24 |
Portable Service Abstraction개념 활용 테스트 코드 작성 (0) | 2024.10.22 |
BeanFactory와ApplicationContext의 개념과 차이(스프링IOC) (1) | 2024.10.21 |
Junit을 활용한 테스트 코드 작성 (1) | 2024.10.18 |