@RestController注解是一个用于定义RESTful Web服务的控制器的特殊注解。它是@Controller和@ResponseBody注解的结合体,意味着你不需要在每个处理请求的方法上都添加@ResponseBody。使用@RestController,所有的处理方法都会自动地将返回值封装成***JSON***或***其他格式的响应体***(Response Body)。
使用@RestController注解的控制器可以返回多种数据类型,包括但不仅限于:
1. 实体对象(Entity Objects):直接返回一个实体(比如自定义的Java类的对象),Spring
Boot会自动使用Jackson或Gson等库将其序列化为JSON格式。
2. 集合类型(Collections):比如List、Set或Map,同样会被自动转换成JSON数组或对象。
3. 字符串(String):如果方法返回一个字符串,Spring会将其视为响应体直接返回,而不是跳转到名为该字符串值的视图。
4. ResponseEntity:允许你完全控制HTTP响应,包括状态码、响应头和响应体。这对于更细粒度的API响应控制非常有用。
5. void:对于不需要返回任何内容的API,可以使用void作为返回类型。例如,一个仅接受数据但不返回任何内容的POST请求。
6.异步类型:如Callable<T>、DeferredResult<T>或ResponseEntity<Future<T>>等,这些用于异步请求处理。
7.流式数据:如StreamingResponseBody或ResponseEntity<StreamingResponseBody>,用于流式传输数据。
8.Reactive类型:当使用Spring WebFlux时,可以返回Mono或Flux等反应式类型,用于构建非阻塞的、反应式的API。