[Spring / Java] @RestController / @Controller 어노테이션 차이점
@Controller 어노테이션은 전통적인 Spring MVC의 컨트롤러로 사용된다. 이 어노테이션은 주로 뷰 템플릿을 반환하는데 사용되며, 클라이언트의 요청을 처리한 후에 뷰 이름을 반환한다. 이 반환된 뷰 이름을 통해 뷰 리졸버(view resolver)가 실제 뷰를 찾아 클라이언트에게 응답을 제공한다. @Controller를 사용할 때는 메소드가 데이터와 뷰를 함께 다루기 때문에, @ResponseBody 어노테이션을 사용하여 메소드의 반환값을 HTTP 응답 본문으로 직접 전송할 수 있다.
@Controller
public class MyController {
@RequestMapping("/home")
public String home() {
return "home"; // 뷰 이름을 반환 (예: home.html)
}
}
@RestController는 @Controller에 @ResponseBody를 결합한 것이다. 이 어노테이션은 RESTful 웹 서비스를 만들 때 사용되며, 모든 메소드의 반환값을 HTTP 응답 본문에 직접 작성한다. 즉, 주로 JSON이나 XML과 같은 데이터 포맷으로 클라이언트에게 데이터를 반환하는 데 사용된다. @RestController는 데이터만 반환하고 뷰를 처리하지 않기 때문에, API 구축에 적합하다.
@RestController
public class MyRestController {
@GetMapping("/data")
public Map<String, Object> getData() {
return Collections.singletonMap("key", "value"); // JSON 형태로 반환
}
}
정리
[Spring / Java] 스프링 빈의 생명주기 (0) | 2024.04.15 |
---|---|
[Spring/Java] Spring Boot 구동 원리 - Dispatcher Servlet (0) | 2024.04.14 |
[server] 데이터의 멱등성(idempotency) (0) | 2024.04.14 |
[server] spring jpa에서 'ordinal' 왜 사용 안할까? (@Enumerated(EnumType.STRING) /@Enumerated(EnumType. ORDINAL) ) (0) | 2024.04.14 |
[Spring/Java] Java record (0) | 2024.04.04 |
댓글 영역