1. 메소드 Argument와 Return Type
: 주로 요청 그 자체 또는 요청에 들어있는 정보를 받아오는데 사용한다.
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-arguments
Argument List
- 요청 또는 응답 자체에 접근 가능한 API
- WebRequest
- NativeWebRequest
- ServletRequest(Response)
- HttpServletRequest(Response)
- 요청 본문을 읽어오거나, 응답 본문을 쓸 때 사용할 수 있는 API
- InputStream
- Reader
- OutputStream
- Writer
- 스프링 5, HTTP/2 리소스 푸쉬에 사용
- pushBuilder
@GetMapping("/events")
@ResponseBody
public String events(PushBuilder pushBuilder){
// 클라이언트가 request 하기 전에 서버가 push 해버림
return "events";
}
- HTTP Method에 대한 정보 지원
- HttpMethod
- LocaleResolver가 분석한 요청의 Locale 정보
- Locale
- TimeZone
- ZoneId
- URI 템플릿 변수 읽을 때 사용
- @PathVariable
- URI 경로 중에 키/값 쌍을 읽어올 때 사용
- @MatrixVariable
- 서블릿 요청 매개변수 값을 선언한 메소드 아규먼트 타입으로 변환. 단순타입인 경우에 이 애노테이션 생략 가능
- @RequestParam
- 요청 헤더값을 선언한 메소드 아규먼트 타입으로 변환
- @RequestHeader
Return Type List
- 리턴 값을 HttpMessageConverter를 사용해 응답 본문으로 사용
- @ResponseBody
- 응답 본문 뿐 아니라 헤더 정보까지, 전체 응답을 만들때 사용. RestApi에서 사용한다. 특정 조건에 따라 응답코드를 설정할 수도 있다.
- HttpEntity
- ResponseEntity
ResponseEntity를 사용한 RestApi 리턴값 구현은 아래의 게시물에 잘 설명되어있다.
https://devlog-wjdrbs96.tistory.com/182
이외에 View를 직접 리턴해주거나 Model을 리턴해줄 수 있다.
Model만 리턴해 줄 경우에는 Spring에서 알아서 RequestToViewNameTranslator를 통해 렌더링할 뷰를 찾아온다.
각각의 아규먼트와 리턴타입에 대해서는 다음 게시물에서 gonna cover up
'Study > Spring' 카테고리의 다른 글
데코레이터 패턴, 프록시패턴 그리고 다이나믹 프록시 (0) | 2022.04.13 |
---|---|
[스프링 웹 MVC 활용] 03. URI 패턴 및 요청 매개변수(단순 타입) (1) | 2022.03.01 |
[스프링 웹 MVC 활용] 01. HTTP Request 맵핑하기 (0) | 2022.03.01 |
[스프링 웹 MVC 설정] 01. @EnableWebMvc와 WebMvcConfigurer (0) | 2022.03.01 |
[스프링 웹 MVC 동작원리] Servlet과 DispatcherServlet의 동작원리 (0) | 2022.03.01 |