Spring 面试题, Spring 中的 @RequestBody 和 @ResponseBody 注解的作用是什么?
Spring 面试题, Spring 中的 @RequestBody 和 @ResponseBody 注解的作用是什么?
QA
Step 1
Q:: Spring 中的 @
RequestBody 注解的作用是什么?
A:: 在 Spring 中,@
RequestBody 注解用于将 HTTP 请求体中的数据绑定到方法参数上。通常用于接收 JSON 或 XML 格式的数据。Spring 会自动将请求体的数据反序列化为 Java 对象,并赋值给方法的参数。这对于需要从客户端接收复杂对象的场景特别有用。
Step 2
Q:: Spring 中的 @
ResponseBody 注解的作用是什么?
A:: @
ResponseBody 注解用于将方法的返回值直接写入到 HTTP 响应体中,而不是返回一个视图。通常用于返回 JSON 或 XML 数据。Spring 会自动将 Java 对象序列化为 JSON 或 XML 格式,然后将其写入响应体。这对于构建 RESTful API 非常有用。
Step 3
Q:: @RequestBody 和 @
ResponseBody 注解的组合使用场景是什么?
A:: @RequestBody 和 @ResponseBody 通常在 RESTful API 中组合使用。例如,@RequestBody 可以用来接收客户端发送的 JSON 数据并转换为 Java 对象,而 @
ResponseBody 可以用来将 Java 对象转换为 JSON 格式返回给客户端。这种组合使用支持开发无状态的服务,符合 REST 架构风格。
Step 4
Q:: Spring 如何处理 @
RequestBody 的数据绑定过程?
A:: Spring 使用 HttpMessageConverter 接口的实现类来处理 @RequestBody 数据的转换过程。默认情况下,Spring 使用 MappingJackson2
HttpMessageConverter 处理 JSON 数据的转换,将 JSON 数据反序列化为 Java 对象。如果请求体的数据格式不符合要求,Spring 会抛出 HttpMessageNotReadableException。
Step 5
Q:: 如何处理 @
RequestBody 数据绑定时出现的异常?
A:: 可以使用 @ExceptionHandler 注解或 @ControllerAdvice 注解来统一处理 @
RequestBody 数据绑定时抛出的异常,如 HttpMessageNotReadableException 或 MethodArgumentNotValidException。通过这些机制,可以捕获异常并返回友好的错误信息给客户端。