Spring Boot의 @RestController와 @Controller의 차이

김형진·2024년 3월 6일

Spring

목록 보기
12/15
post-thumbnail

Spring Framework는 웹 애플리케이션을 개발할 때 사용되는 주요한 기능 중 하나입니다. @RestController와 @Controller는 웹 애플리케이션의 엔드포인트를 정의하고 처리하는 데 사용됩니다.

1. @Controller

@Controller는 Spring MVC 컨트롤러의 주요 어노테이션입니다. 이 어노테이션을 사용하면 Spring MVC에서 해당 클래스를 컨트롤러로 인식하고 웹 요청을 처리할 수 있습니다. 주로 View 렌더링을 위한 엔드포인트를 정의하는 데 사용됩니다.

아래는 @Controller를 사용한 예시입니다.

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "hello"; // view 이름 반환
    }
}

위 예시에서 /hello 엔드포인트에 대한 요청이 들어오면 hello() 메서드가 호출되고, 해당 메서드는 "hello"라는 View의 이름을 반환합니다.

2. @RestController

@RestController는 @Controller의 특별한 형태로, 데이터를 반환하는 RESTful 웹 서비스의 엔드포인트를 정의하는 데 사용됩니다. 이 어노테이션을 사용하면 반환되는 값이 View가 아니라 HTTP 응답 본문에 직접 포함됩니다.

아래는 @RestController를 사용한 예시입니다.

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloRestController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!"; // 직접 문자열을 반환
    }
}

위 예시에서 /hello 엔드포인트에 대한 요청이 들어오면 hello() 메서드가 호출되고, 해당 메서드는 "Hello, World!"라는 문자열을 HTTP 응답 본문에 직접 반환합니다.

3. 마무리

@Controller: 주로 View 렌더링을 위한 엔드포인트를 정의할 때 사용됩니다. 반환 값은 주로 View 이름입니다.
@RestController: RESTful 웹 서비스를 개발할 때 사용됩니다. 반환 값은 HTTP 응답 본문에 직접 포함됩니다.

0개의 댓글