Spring @RequestBody與@ResponseBody註解
Spring的註解非常多,這篇文章我們說一下它的@RequestBody 和 @ResponseBody註解。
@ResponseBody
簡單說,@ResponseBody註解將HttpRequest的請求體對映為Java的POJO物件。一般Get方法是沒有body的,在post資料的時候可以指定json資料。

image
一般用法如下:
@RestController public class FirstController { private final Logger logger = LoggerFactory.getLogger(getClass()); @RequestMapping("/requestbody") public String requestbody( @RequestBody User user ){ return user.toString(); } }
注意:對於想要轉換的格式,記得要新增對應的依賴包。比如json的,新增Gson。或者jackson,必要時還要配置一下converter的bean。
- 不新增@RequestBody註解的結果

image
-
新增@RequestBody註解的結果
image
可以看到@RequestBody註解主要用來處理請求中body的部分。
@ResponseBody
這個註解可以放在方法上用來指示這個方法,返回的值直接寫到Http的響應體中,不需要替換為Spring的Model或者解析為檢視。
如下面的這個例子,方法直接返回"index"字串。
@RequestMapping({"/","/index"}) @ResponseBody public String index(){ return "index"; }

image
和@RequestBody一樣,@ResponseBody也是由HttpMessageConverter進行物件之間的轉換的。如果要自己配置,那麼在Spring的配置檔案中,做如下配置。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven /> <context:component-scan base-package="me.aihe" /> <!-- HttpMessageConverter的配置 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter"></ref> <ref bean="gsonHttpMessageConverter"></ref> </list> </property> </bean> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter" /> <bean id="gsonHttpMessageConverter" class="org.springframework.http.converter.json.GsonHttpMessageConverter" /> </beans>
最後
關於這兩個註解的使用,可以自行嘗試下,環境搭建參考我的上篇文章
參考
- ofollow,noindex">Spring MVC入門案例
- Spring’s RequestBody and ResponseBody Annotations