This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Framework 6.1.14! |
@ResponseBody
You can use the @ResponseBody
annotation on a method to have the return serialized
to the response body through an
HttpMessageConverter.
The following listing shows an example:
-
Java
-
Kotlin
@GetMapping("/accounts/{id}")
@ResponseBody
public Account handle() {
// ...
}
@GetMapping("/accounts/{id}")
@ResponseBody
fun handle(): Account {
// ...
}
@ResponseBody
is also supported at the class level, in which case it is inherited by
all controller methods. This is the effect of @RestController
, which is nothing more
than a meta-annotation marked with @Controller
and @ResponseBody
.
A Resource
object can be returned for file content, copying the InputStream
content of the provided resource to the response OutputStream
. Note that the
InputStream
should be lazily retrieved by the Resource
handle in order to reliably
close it after it has been copied to the response. If you are using InputStreamResource
for such a purpose, make sure to construct it with an on-demand InputStreamSource
(for example, through a lambda expression that retrieves the actual InputStream
).
You can use @ResponseBody
with reactive types.
See Asynchronous Requests and Reactive Types for more details.
You can use the Message Converters option of the MVC Config to configure or customize message conversion.
You can combine @ResponseBody
methods with JSON serialization views.
See Jackson JSON for details.