본문으로 바로가기

"@Controller"와 "@RestController"의 차이점

category Programing/Spring 2024. 3. 30. 22:25
반응형

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 형식의 데이터를 반환합니다. 애플리케이션의 목적과 요구 사항에 따라 적절한 어노테이션을 선택하여 사용해야 합니다.

반응형