Spring 프레임워크에서는 웹 애플리케이션의 요청을 처리하기 위해 컨트롤러(Controller) 클래스를 사용합니다. 이때 @Controller와 @RestController는 두 가지 주요한 어노테이션으로, 각각의 역할과 동작 방식에 차이가 있습니다.
1. @Controller
@Controller 어노테이션은 Spring MVC에서 컨트롤러 클래스를 정의할 때 사용됩니다. 이 어노테이션이 붙은 클래스는 HTTP 요청을 처리하고, 해당 요청에 대한 응답을 생성합니다. 주로 HTML 페이지를 반환하거나 뷰(View)를 처리하기 위해 사용됩니다.
@Controller
public class MyController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
위의 코드에서 /hello 경로로 GET 요청이 들어오면 hello() 메서드가 실행되고, "hello" 라는 뷰를 반환합니다.
2. @RestController
@RestController 어노테이션은 @Controller와 유사하지만, RESTful 웹 서비스를 제공하는 데 사용됩니다. @RestController 어노테이션이 붙은 클래스의 모든 핸들러 메서드는 HTTP 요청에 대한 데이터를 반환하고, 해당 데이터는 직렬화된 형태로 클라이언트에게 전송됩니다. 주로 JSON 또는 XML 형식의 데이터를 반환합니다.
@RestController
public class MyRestController {
@GetMapping("/api/hello")
public String hello() {
return "Hello, World!";
}
}
위의 코드에서 /api/hello 경로로 GET 요청이 들어오면 "Hello, World!"라는 문자열이 JSON 형식으로 클라이언트에게 반환됩니다.
차이점 요약
@Controller: HTML 페이지나 뷰를 반환하기 위해 사용되며, @ResponseBody 어노테이션이 필요하다.
@RestController: RESTful 웹 서비스를 제공하기 위해 사용되며, @ResponseBody를 각 메서드에 붙일 필요가 없다.
결론
@Controller와 @RestController는 Spring 애플리케이션에서 웹 요청을 처리하는 데 사용됩니다. 전자는 주로 HTML 페이지를 반환하고, 후자는 주로 JSON 또는 XML 형식의 데이터를 반환합니다. 애플리케이션의 목적과 요구 사항에 따라 적절한 어노테이션을 선택하여 사용해야 합니다.
'Programing > Spring' 카테고리의 다른 글
Spring AOP로 Custom Annotation을 만들고 사용하는 방법 (0) | 2024.12.11 |
---|---|
Java Spring Boot를 사용하여 Slack으로 메시지 보내기 (0) | 2024.07.07 |
Maven을 사용한 프로젝트 빌드하기: 명령 프롬프트(cmd)에서 간단한 가이드 (0) | 2024.02.26 |
Spring Boot JPA를 활용한 Lazy Loading과 Eager Loading의 이해 (0) | 2024.02.06 |
스프링 웹플럭스: 비동기 프로그래밍을 이해하며 시작하기 (0) | 2023.08.22 |