@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 处理程序延迟检索 InputStream。如果您正在为此目的使用 InputStreamResource,请确保使用按需 InputStreamSource 构造它(例如,通过一个 lambda 表达式,该表达式检索实际的 InputStream)。

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

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

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