Spring面试题, Spring 中的 @RequestBody 和 @ResponseBody 注解的作用是什么?
Spring面试题, Spring 中的 @RequestBody 和 @ResponseBody 注解的作用是什么?
QA
Step 1
Q:: Spring 中的 @RequestBody 和 @
ResponseBody 注解的作用是什么?
A:: @RequestBody 注解用于将 HTTP 请求体中的 JSON 或 XML 数据转换为 Java 对象,该 Java 对象通常作为方法参数传递。@
ResponseBody 注解用于将方法的返回值转换为 JSON 或 XML 格式的数据,并将其写入到 HTTP 响应体中。
Step 2
Q:: @RequestBody 和 @
ResponseBody 的作用机制是什么?
A:: @RequestBody 注解通过 HttpMessageConverter 将请求体数据反序列化为 Java 对象,而 @
ResponseBody 注解则通过 HttpMessageConverter 将 Java 对象序列化为 JSON 或 XML 格式的响应数据。
Step 3
Q:: @RequestBody 和 @
ResponseBody 的常见用例是什么?
A:: @RequestBody 通常用于处理 POST、PUT 请求中提交的 JSON 或 XML 数据,而 @
ResponseBody 通常用于返回 JSON 或 XML 格式的响应数据,例如 RESTful API 的响应。
Step 4
Q:: 如何配置 Spring 中的 HttpMessageConverter?
A:: 可以通过扩展 WebMvcConfigurer 接口的 configureMessageConverters 方法来添加或自定义 HttpMessageConverter。例如,可以添加自定义的 Jackson2
ObjectMapperBuilder 来配置 JSON 转换。
Step 5
Q:: @RequestBody 和 @
ResponseBody 是否可以用于同一个方法?
A:: 可以。同一个方法既可以接收请求体中的 JSON 数据(使用 @RequestBody),也可以返回 JSON 格式的响应数据(使用 @
ResponseBody)。
Step 6
Q:: @RequestBody 和 @
ResponseBody 与 Spring Boot 的默认配置有什么关系?
A:: Spring Boot 自动配置了一些默认的 HttpMessageConverters,例如 MappingJackson2
HttpMessageConverter 用于 JSON 数据处理。因此,在大多数情况下,不需要手动配置这些转换器。