스프링에서 컨트롤러를 선언하는 어노테이션인 @RestController와 @Controller에 대해 알아보겠습니다.

 

 

스프링 @RestController와 @Controller 공통점과 차이점

 

 @Controller 어노테이션 

 - 여러가지 뷰 페이지를 반환할 수 있고 @ResponseBody 어노테이션을 사용하여 HTTP 응답을 직접 작성할 수 있음.

 - 전통적인 MVC 웹 어플리케이션에서 사용.

 

 

 

 

 @RestController 어노테이션 

 - @Controller 어노테이션의 확장으로 컨트롤러의 모든 메서드는 HTTP 응답으로 데이터를 반환함.

 - 데이터 타입은 JSON이 가장 많이 사용됨. Restful 웹 서비스에서 사용.

 

 

@ResponseBody 어노테이션과 예시

컨트롤러에서 반환되는 메서드의 결과를 HTTP 응답 메시지의 Body에 직접 쓰도록 하는 어노테이션.

 

@RestController
public class MyController {
 
    @GetMapping("/hello")
    public @ResponseBody String hello() {
        return "Hello World";
    }
}

@GetMapping 어노테이션을 통해 /hello URL에 매핑된 GET 요청을 처리하는 메서드입니다. 이 경우 반환되는 "Hello World" 문자열은 ViewResolver를 사용하지 않고 내부적으로 반환되는 데이터 타입인 문자열에 알맞는 컨버터가 사용됩니다. 이 HTTP Response Body에 직접 문자열이 작성되어 응답하게 됩니다.

 

다시 말하면 View 기능을 사용하지않고 Restful 웹 서비스를 제공할때 사용할 수 있습니다.

 

 

 

 

 요약 

 정리하면 @Controller 어노테이션은 전통적인 MVC 패턴에서 View를 찾아 반환하는 기능을 합니다. 이후 @Controller 어노테이션에  @ResponseBody 어노테이션의 기능을 포함한 @RestController 어노테이션이 추가되었고 어노테이션 하나로 데이터를 주고받는 것에 더 특화된 기능을 쉽게 사용할 수 있게 되었습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기