@ResponseBody
@ResponseBody
你可以在方法上使用 @ResponseBody 注解,以便将方法的返回值通过 HttpMessageConverter 序列化到响应体中。以下示例展示了如何实现:
- Java
- Kotlin
@GetMapping("/accounts/{id}")
@ResponseBody
public Account handle() {
// ...
}
@GetMapping("/accounts/{id}")
@ResponseBody
fun handle(): Account {
// ...
}
@ResponseBody 也支持在类级别使用,在这种情况下,所有控制器方法都会继承该注解。这就是 @RestController 的作用效果,@RestController 本质上就是带有 @Controller 和 @ResponseBody 注解的元注释(meta-annotation)。
对于文件内容,可以返回一个Resource对象,将该资源提供的InputStream内容复制到响应的OutputStream中。需要注意的是,InputStream应该由Resource处理程序延迟获取(lazily retrieved),以便在内容被复制到响应后能够可靠地关闭它。如果您为此目的使用InputStreamResource,请确保使用按需(on-demand)的InputStreamSource来构造它(例如,通过一个lambda表达式来获取实际的InputStream)。
你可以将@ResponseBody方法与JSON序列化视图结合使用。详情请参阅Jackson JSON。