什么是序列化:
序列化的過程,就是一個“freeze”的過程,它將一個對象freeze住,然后進行存儲,等到再次需要的時候,再將這個對象de-freeze就可以立即使用。
什么情況下需要序列化:
原文:https://blog.csdn.net/dinghqalex/article/details/46009911
1. 當你想把的內存中的對象寫入到硬盤的時候。
2. 當你想用套接字在網絡上傳送對象的時候。
3. 當你想通過RMI傳輸對象的時候。
稍微解釋一下:
1. 【保存在硬盤中時】比如說你的內存不夠用了,那計算機就要將內存里面的一部分對象暫時的保存到硬盤中,等到要用的時候再讀入到內存中,硬盤的那部分存儲空間就是所謂的虛擬內存。在比如過你要將某個特定的對象保存到文件中,我隔幾天在把它拿出來用,那么這時候就要實現Serializable接口。
2. 【網絡上傳輸時】在進行Java的Socket編程的時候,你有時候可能要傳輸某一類的對象,那么也就要實現Serializable接口。最常見的你傳輸一個字符串,它是JDK里面的類,也實現了Serializable接口,這樣做為的是將數據變為二進制來傳輸,所以可以在網絡上傳輸。
3. 【遠程方法調用時】如果要通過遠程的方法調用(RMI)去調用一個遠程對象的方法,如在計算機A中調用另一台計算機B的對象的方法,那么你需要通過JNDI服務獲取計算機B目標對象的引用,將對象從B傳送到A,就需要實現序列化接口。
如何實現序列化:
一個對象序列化的接口,一個類只有實現了Serializable接口,它的對象才是可序列化的。因此如果要序列化某些類的對象,這些類就必須實現Serializable接口。而實際上,Serializable是一個空接口,沒有什么具體內容,它的目的只是簡單的標識一個類的對象可以被序列化。
疑問:
@ResponseBody是作用在方法上的,@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在異步獲取數據時使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析為跳轉路徑,但是加上 @ResponseBody 后返回結果不會被解析為跳轉路徑,而是直接寫入 HTTP response body 中。(@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個對象。) 比如異步獲取 json 數據,加上 @ResponseBody 后,會直接返回 json 數據,JSON是序列化, (所以返回結果要實現序列化就能轉為json(待確認))。
參考:https://www.cnblogs.com/yingyigongzi/p/9280608.html
問:返回如果是對象,對象需要實現序列化
SpringBoot定制@ResponseBody注解返回的Json格式:
https://blog.csdn.net/qq_33328356/article/details/89856823
