@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