[Spring Boot] @Controller vs @RestController

Jiwoo Kim·2021년 6월 18일
0
post-thumbnail

Spring Boot에서 컨트롤러를 지정하는 방법은 클래스에 어노테이션을 달아 주는 것이다. 항상 @RestController만 별 생각 없이 사용해왔는데 책을 보다가 @Controller가 보여서 둘의 차이점을 정리해보았다.

@Controller

@Controller는 전통적인 MVC 패턴에서 View를 반환하는 데에 사용된다. 이 때 작업의 흐름은 아래와 같다.

View가 아닌 데이터만을 클라이언트에게 반환하기 위해서는, @ResponseBody 어노테이션을 메서드마다 붙여 데이터를 Json 형태로 변환해서 HttpResponse를 전달해야 한다. 이 때의 흐름은 아래와 같다.

@Controller
public class HelloController {
    @GetMapping(value = "/hello")
    public @ResponseBody String hello() {
        return "hello";
    }
}

@RestController

@RestController는 HttpResponse에 특화된 컨트롤러의 한 종류다.@Controller@ResponseBody를 포함하고 있기 때문에, 데이터를 자동으로 Json 형태로 HttpResponse에 담아준다. 이를 통해 코드를 더 간결하게 작성할 수 있다. 이 어노테이션은 Spring Boot Starter Web 프로젝트에 들어있다.

@RestController
public class HelloController {
    @GetMapping(value = "/hello")
    public String hello() {
        return "hello";
    }
}

참고

The Spring @Controller and @RestController Annotations
[Spring] @Controller와 @RestController 차이

0개의 댓글