스프링에서 컨트롤러를 선언하는 어노테이션인 @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 어노테이션이 추가되었고 어노테이션 하나로 데이터를 주고받는 것에 더 특화된 기능을 쉽게 사용할 수 있게 되었습니다.
'블로그 > 개발일지 (TIL)' 카테고리의 다른 글
스프링 공식 튜토리얼로 실습방법, 인텔리제이 단축키 3가지 소개, lombok 설정, 타임리프, Gradle 스프링 플러그인, bootRun (2) | 2023.04.26 |
---|---|
스프링 RequestMapping, 컨텍스트 호출, 배포서술자, WEB-INF (0) | 2023.03.16 |
Redis 서버, 클라이언트, SDR, Redis 마이그레이션 참고사항 (0) | 2023.02.14 |
Maven Multi Module 프로젝트, Multi 리포지토리, 성능 테스트 (1) | 2023.02.11 |
Maven 의존성 전이, 스프링 마이그레이션시 참고사항, UML 의존관계 (0) | 2023.02.09 |
최근댓글