@Controller 와 @RestController 는 Spring Framework 에서 사용되는 어노테이션 중 하나이다.
@Controller 는 클라이언트의 요청을 받아서 처리하고, 모델을 업데이트하며, 결과를 보여줄 뷰를 선택하는 역할을 한다. 따라서 @Controller 는 리턴되는 값의 파일을 응답한다.
반면 @RestController 는 반환되는 값이 본문에 직접 포함되어JSON이나 XML과 같은 형태로 출력하게 된다.
UserController.class
@RestController
@Controller
public class UserController {
@GetMapping("/joinForm")
public String joinForm(){
return "joinForm";
}
}
resources/templates/joinForm.mustache
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>회원가입 페이지</h1>
<br>
</body>
</html>
mustache 는 템플릿 엔진 중 하나이다.
(1) @Controller 를 사용했을 때

@Controller 를 사용하면 return "joinForm"; 이 가르키는 joinForm.mustache
를 출력한다
(2) @RestController 를 사용했을 때

@RestController 를 사용하면 리턴 값인 joinForm 을 문자열 그대로 출력한다.
Share article