[ Spring ] @Controller와 @RestController의 차이
2024. 2. 12. 19:04ㆍ· BACK-END/└ Spring Boot
@Controller
- 전통적인 Spring MVC의 컨트롤러 어노테이션.
- 주로 HTML View(화면)를 반환하기 위해 사용된다.
- 메서드에서 @ResponseBody 어노테이션이나 메서드 자체에 @RestController 어노테이션이 없는 경우 메서드가 반환하는 값은 뷰에 전달되어 렌더링 된다.
- 결과를 화면으로 반환하는 컨트롤러
@RestController
- @Controller + @ResponseBody가 합쳐진 형태로 JSON 또는 XML 형태의 객체데이터를 반환한다.
- 메서드가 반환하는 값은 직접 클라이언트로 전송되는 데이터이다.
- 결과를 직접 생성하는 컨트롤러
- 메서드가 자동으로 @ResponseBody로 표시된 것처럼 간주되어, 메서드의 반환 값이 직접 응답 본문으로 전송된다.
[ 간단한 예제 비교 ]
// @Controller 사용 예제
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/hello")
public String hello() {
return "hello"; // 뷰의 이름인 "hello"를 반환
}
}
// @RestController 사용 예제
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyRestController {
@GetMapping("/api/hello")
public String hello() {
return "Hello, World!"; // 직접 응답으로 전송되는 문자열
}
}
사실 이 둘의 차이는 '용도 차이' 정도이다. @Controller가 먼저 나왔고, @RestController가 이후 나온 방식이기 때문이다.
추천 참고 : https://mangkyu.tistory.com/49
개인 공부 기록용입니다:)
많은 분들의 티스토리 참고하였습니다.
728x90
'· BACK-END > └ Spring Boot' 카테고리의 다른 글
[ Spring ] @ModelAttribute Annotation (0) | 2024.02.15 |
---|---|
[ Spring ] @Autowired Annotation (0) | 2024.02.14 |
[ Spring ] @Repository / @Service / @Controller (0) | 2024.02.11 |
[ Database / Spring ] 데이터베이스 연동하기 및 파라미터를 통해 데이터 삽입해보기 (0) | 2024.02.09 |
[ Spring Boot ] 프로젝트 실행 오류 : java.lang.ClassNotFoundException: (0) | 2024.02.08 |