컨트롤러란
컨트롤러의 역할
▪ 비즈니스 로직과 클라이언트의 요청을 연결해준다.
▪ 클라이언트로부터 요청을 받고, 해당 요청에 대해 서비스 레이어에 구현된 적절한 메서드를 호출해서 결과값을 받는다.
▪ 요청과 응답을 전달하는 역할만 맡는다.
▪ (@Controller 사용시 주의..) "member/login"과 같은 경로를 접근할 때 Spring Boot는 가장 먼저 @Controller 또는 @RestController에서 매핑된 경로를 찾게 된다.!
➡️ Controller란?
@Controller는 전통적인 스프링 MVC 컨트롤러를 정의할 때 사용된 것으로,
주로 뷰 템플릿을 반환하는 데 사용한다.
예를 들어, Thymeleaf나 JSP와 같은 뷰 템플릿을 렌더링하기 위해 사용한다.
@Controller
public class MyViewController {
@RequestMapping("/greeting")
public String greeting(Model model) {
model.addAttribute("message", "Hello, World!");
return "greeting"; // 뷰 이름을 반환. 예를 들어 "greeting.jsp" 뷰 파일로 매핑될 수 있음
}
}
➡️ RestController란?
▪ @Controller에 @ResponseBody가 결합된 어노테이션이다.
반면 @RestController는 스프링 4.0부터 도입된 어노테이션으로,
주로 RESTful한 웹 서비스를 개발할 때 사용한다.
@Controller와 @ResponseBody를 합친 것으로,
컨트롤러 클래스의 모든 메소드가 기본적으로 HTTP 응답 본문에 데이터를 반환한다고 가정한다.
예를 들어, 주로 JSON이나 XML과 같은 형식의 데이터를 반환하는 API를 개발할 때 사용한다.
@RestController
public class MyRestController {
@GetMapping("/greeting")
public Map<String, String> greeting() {
Map<String, String> result = new HashMap<>();
result.put("message", "Hello, World!");
return result; // JSON 객체로 변환되어 HTTP 응답 본문에 직접 반환됨
}
}
따라서 html을 포함한 어떤 웹 애플리케이션을 작업할 것이라면 @Controller를 사용하고,
정말 백엔드 작업 등 구현 로직에 신경을 쓸 예정이며, 결과는 Postman으로 JSON 형태로 보고자 한다면 @RestController 사용을 권장한다.
'Programming > Spring' 카테고리의 다른 글
[Spring] - 스프링 (gradle) springdoc으로 Swagger3 추가하기 (0) | 2024.02.06 |
---|---|
[Spring] - 스프링부트 API 작성 방법 : Post, Put, Delete Mapping (0) | 2024.02.06 |
[Spring] - 스프링부트 API 작성 방법 : GetMapping (0) | 2024.02.04 |
[Spring] IntelliJ 커뮤니티로 스프링 부트 프로젝트 생성하기 (feat. gradle 사용) (0) | 2024.02.01 |
[Spring] Spring 프레임워크의 특징 (0) | 2024.01.24 |