做用 java
1.當2個進程在進行遠程通訊時,相互發送數據,數據都是以二進制的形式傳送的。若是咱們要傳輸對象的話,就須要把對象轉化爲字節數組(二進制數據),接收方接收後反序列成對象。目的在於,傳送對象的狀態,也就是屬性值spring
2.反序列化後的對象還能夠保存到硬盤上。數組
實現方式mvc
1.實現Serializable
接口。code
2.實現Serializable
接口,並增長void writeObject(ObjectOutputStream out) throws IOException
與void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
這2個方法來自定義某些屬性的序列化。對象
3.實現Externalizable
接口(該接口繼承自Serializable
接口),並重寫writeExtername
與readExternal
方法來徹底自定義要序列化的屬性。繼承
顯式定義serialVersionUID
屬性的做用接口
1.對於一個要進行序列化的類,咱們但願類的不一樣版本對序列化兼容(這個類可能前先後後對字段進行刪改),若是不顯式設置id,這個類的每一個版本的id(由系統生成)都是不同的。那麼反序列化的時候,永遠只能反序列化最新的實例了(舊的實例由於id不一致將失敗)。進程
2.因此要保證兼容的話,就須要設置一個顯式的id。那麼在序列化舊的實例時,新添加的或更改的字段會被設置爲null,刪除的字段不設置。it
3.若是咱們不想兼容不一樣版本,咱們還能夠爲不一樣的版本再設置一個版本號。在序列化和反序列化的過程當中(自定義序列化),咱們還能夠根據版本號來選擇性的序列化那些變化的屬性的狀態。
在springmvc裏,javabean都要實現Serializable
接口,並生成顯式id
其目的就是咱們上面分析的序列化的做用以及顯式id的做用,特別是在遠程服務調用的項目中。