@ResponseBody

您可以在方法上使用 @ResponseBody 注解,通过 HttpMessageConverter 将返回值序列化到响应体中。 以下清单显示了一个示例:

  • Java

  • Kotlin

@GetMapping("/accounts/{id}")
@ResponseBody
public Account handle() {
	// ...
}
@GetMapping("/accounts/{id}")
@ResponseBody
fun handle(): Account {
	// ...
}

@ResponseBody 也支持在类级别使用,在这种情况下,所有控制器方法都会继承它。 这就是 @RestController 的作用,它不过是一个用 @Controller@ResponseBody 标记的元注解。

可以返回 Resource 对象作为文件内容,将提供的资源的 InputStream 内容复制到响应的 OutputStream。 请注意,InputStream 应该由 Resource 句柄延迟检索,以便在复制到响应后可靠地关闭它。 如果您为此目的使用 InputStreamResource,请确保使用按需 InputStreamSource (例如,通过检索实际 InputStream 的 lambda 表达式)构造它。

您可以将 @ResponseBody 与响应式类型一起使用。 有关更多详细信息,请参阅 异步请求响应式类型

您可以使用 MVC 配置消息转换器 选项来配置或自定义消息转换。

您可以将 @ResponseBody 方法与 JSON 序列化视图结合使用。 有关详细信息,请参阅 Jackson JSON