Loading...
Spring Framework Reference Documentation 7.0.2의 Return Values의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
다음 표는 지원되는 controller method return value를 보여줍니다. Reactor, RxJava, 또는 기타 library의 reactive type은 일반적으로 모든 return value에 대해 지원됩니다.
Flux와 같은 return type의 경우, 여러 value가 예상되면 element는 도착하는 대로 스트리밍되고 버퍼되지 않습니다. 이는 잠재적으로 많은 수의 element를 메모리에 보관하는 것은 효율적이지 않기 때문에 기본 동작입니다.
media type이 (application/json+stream과 같은) 무한 스트림을 의미하는 경우, value는 개별적으로 기록 및 플러시됩니다. 그렇지 않으면, value는 개별적으로 기록되고 플러시는 별도로 발생합니다.
element를 JSON으로 인코딩하는 동안 error가 발생하면, response는 이미 기록 및 커밋되었을 수 있으며, 그 시점에는 올바른 error response를 렌더링하는 것이 불가능합니다. 일부 경우, 애플리케이션은 element를 버퍼하고 한 번에 모두 인코딩함으로써 메모리 효율성을 희생하는 대신 그러한 error를 더 잘 처리하도록 선택할 수 있습니다. controller는 그런 다음
Flux<List<B>>를 return할 수 있습니다. Reactor는 이를 위한 전용 operator인Flux#collectList()를 제공합니다.
| Controller method return value | Description |
|---|---|
@ResponseBody | return value는 HttpMessageWriter instance를 통해 인코딩되고 response에 기록됩니다.<br>@ResponseBody를 참조하세요. |
HttpEntity<B>, ResponseEntity<B> | return value는 HTTP header를 포함한 전체 response를 지정하며, body는 HttpMessageWriter instance를 통해 인코딩되고 response에 기록됩니다.<br>ResponseEntity를 참조하세요. |
HttpHeaders | header만 있고 body가 없는 response를 return하기 위해 사용합니다. |
ErrorResponse, ProblemDetail | body에 detail이 포함된 RFC 9457 error response를 렌더링하기 위해 사용합니다.<br>Error Responses를 참조하세요. |
String | ViewResolver instance로 resolve되어 implicit model과 함께 사용되는 view name입니다. implicit model은 command object와 @ModelAttribute method를 통해 결정됩니다. handler method는 또한 Model argument를 선언하여 ( 앞에서 설명한 대로) 프로그래밍 방식으로 model을 확장할 수 있습니다. |
View | command object와 @ModelAttribute method를 통해 결정된 implicit model과 함께 렌더링에 사용할 View instance입니다. handler method는 또한 Model argument를 선언하여 ( 앞에서 설명한 대로) 프로그래밍 방식으로 model을 확장할 수 있습니다. |
java.util.Map, org.springframework.ui.Model | implicit model에 추가할 attribute이며, view name은 request path를 기반으로 암묵적으로 결정됩니다. |
@ModelAttribute | model에 추가할 attribute이며, view name은 request path를 기반으로 암묵적으로 결정됩니다.<br>@ModelAttribute는 선택 사항입니다. 이 표의 뒷부분에 있는 “Any other return value”를 참조하세요. |
Rendering | model 및 view 렌더링 시나리오를 위한 API입니다. |
FragmentsRendering, Flux<Fragment>, Collection<Fragment> | 각각 자체 view와 model을 가진 하나 이상의 fragment를 렌더링하기 위해 사용합니다.<br>자세한 내용은 HTML Fragments를 참조하세요. |
void | void(예를 들어 Mono<Void>)와 같은 비동기 return type(또는 null return value)을 가진 method는 ServerHttpResponse, ServerWebExchange argument 또는 @ResponseStatus annotation도 가지고 있는 경우 response를 완전히 처리한 것으로 간주됩니다. controller가 positive ETag 또는 lastModified timestamp check를 수행한 경우에도 마찬가지입니다.<br>자세한 내용은 Controllers를 참조하세요.<br>위의 어느 것도 해당하지 않는 경우, void return type은 REST controller의 “no response body” 또는 HTML controller의 기본 view name 선택을 나타낼 수도 있습니다. |
Flux<ServerSentEvent>, Observable<ServerSentEvent>, or other reactive type | server-sent event를 emit합니다. ServerSentEvent wrapper는 data만 기록하면 되는 경우 생략할 수 있습니다(그러나 text/event-stream은 매핑에서 produces attribute를 통해 요청되거나 선언되어야 합니다). |
| Other return values | return value가 다른 어떤 방식으로도 resolve되지 않으면, BeanUtils#isSimpleProperty에 의해 simple type으로 결정되지 않는 한 model attribute로 취급되며, simple type인 경우에는 resolve되지 않은 상태로 남습니다. |
Method Arguments
Type Conversion