학습 목표
- @RestController 의 핵심 개념을 안다
- @RestController = @Controller + @ResponseBody 의 동작을 안다
- 두 어노테이션의 결정적 차이를 안다.
1. 문제
@Controller 와 @RestController 의 차이가 뭔지?
2. 새 도구
@RestController = @Controller + @ResponseBody: 반환값을 JSP 가 아니라 JSON 으로. View 가 흐름에서 빠짐.
3. 코드
// @Controller (기존) — com.smhrd.controller
@Controller
public class BoardController {
@GetMapping("/board/{num}")
public String view(@PathVariable int num, Model model) {
model.addAttribute("board", service.selectOne(num));
return "board/view"; // ← JSP ViewName
}
}
// @RestController (REST) — com.smhrd.controller
@RestController
public class BoardApiController {
@GetMapping("/api/boards/{num}")
public Board view(@PathVariable int num) {
return service.selectOne(num); // ← 그대로 JSON 응답
}
}
4. 정리
- @Controller = JSP 반환
- @RestController = JSON 반환
- View 박스가 흐름에서 사라짐
- API 서버 만들 때 사용
5. Before / After
전 차시
@Controller 와 @RestController 의 차이가 뭔지?
이번 차시
두 어노테이션의 결정적 차이를 안다.
학습 확인 체크리스트
- @Controller = JSP 반환
- @RestController = JSON 반환
- View 박스가 흐름에서 사라짐
- API 서버 만들 때 사용