💻 Backend/스프링

@RestController vs @Controller

미미누 2022. 1. 11. 22:49

 

@RestController

 

@Controller 는 반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다.

@RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. 

 

Controller 대신에 @RestController 애노테이션을 사용하면,

해당 컨트롤러에 모두 @ResponseBody 가 적용되는 효과가 있다.

 

 뷰 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 데이터를 입력한다.

 

이름 그대로 Rest API(HTTP API)를 만들 때 사용하는 컨트롤러이다.

 

참고로 @ResponseBody 는 클래스 레벨에 두면 전체에 메서드에 적용되는데,

@RestController 에노테이션 안에 @ResponseBody 가 적용되어 있다.

 

 

@RestController
public class MappingController {

 @RequestMapping("/hello-basic")
 public String helloBasic() {
 log.info("helloBasic");
 return "ok";
 }
 
 }

위 코드에서 @RestController가 적용되었기 때문에,

helloBasic() 메서드에서 반환 값이 String임에도 불구하고, ok 메시지를 반환하는 것이다!

 

@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {
 private MemberRepository memberRepository = MemberRepository.getInstance();
 @GetMapping("/new-form")
 public String newForm() {
 return "new-form";
 }

위 코드는 @Controller가 적용되었기 때문에,

newForm() 메서드에서 "new-form"이라는 view를 찾는 것이다!

'💻 Backend > 스프링' 카테고리의 다른 글

싱글톤 컨테이너란?  (0) 2022.01.23
싱글톤 패턴이란?  (0) 2022.01.23
싱글톤이란?  (0) 2022.01.23
HTTP 요청 파라미터 - @RequestParam  (0) 2022.01.10
스프링 부트 기본 메시지 컨버터  (0) 2022.01.08