`@Controller`와 `@RestController`는 Spring Framework에서 사용되는 애노테이션임
1. @Controller
- 웹 애플리케이션에서 HTML을 생성하고 반환하는 데 사용됨
- 전통적인 MVC(Model-View-Controller) 패턴에서 컨트롤러 역할을 함
- 메서드에서 반환하는 값은 보통 뷰 이름으로 해석되어, `ViewResolver`가 이를 실제 HTML 파일이나 템플릿으로 변환함
@Controller
public class TestController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, World!");
return "hello"; // View name
}
}
- return "hello"는 뷰 이름임
- `hello.html` 같은 템플릿 파일이 반환됨
2. @RestController
- RESTful 웹 서비스를 개발할 때 사용됨
- 클라이언트에 JSON, XML 등과 같은 데이터를 직접 반환함
- `@RestController`는 `@Controller`와 `@Responsebody`가 결합된 것으로, 메서드에서 반환하는 값이 뷰를 통해 렌더링되지 않고, 직접 HTTP 응답 본문으로 변환됨
@RestController
public class TestRestController {
@GetMapping("/api/hello")
public Map<String, String> hello() {
Map<String, String> response = new HashMap<>();
response.put("message", "Hello, World!");
return response;
}
}
- `Map` 객체가 JSON 형식으로 클라이언트에게 반환됨
참고
OpenAi. (2024) ChatGPT (version 3.5)[Large Language model]. https://chat.openai.com
300x250
'SOMEDAY > JAVA' 카테고리의 다른 글
[스프링 부트 포토그램] 11강 ~ 15강 Controller (데이터 전송, 응답, redirection) (0) | 2024.08.21 |
---|---|
[스프링 부트 포토그램] 8강~ 10강 Controller (동작 방식, http, 쿼리스트링, 주소 변수 매핑) (0) | 2024.08.20 |
[스프링 부트 포토그램] 1강 ~7강 환경설정 완료 (0) | 2024.08.09 |
[스프링 부트 포토그램] Spring Boot PhotoGram 클론 코딩 완료 (0) | 2024.08.08 |
[스프링 부트 3 백엔드 개발자 되기] p.77 dependencies - lombok 오류 (0) | 2024.08.05 |