天天看點

Hessian序列化詳解簡單示例

簡單示例

com.spy.test.hessian.User

public class User implements Serializable {
    private Long    userId;
    private String  userCode;
    private String  userName;
    private String  email;
    private Integer age;

    private List<String> roles;
}

List<String> roles = Arrays.asList("admin");

user = User.builder()
           .userId(L)
           .userCode("0001")
           .userName("cc")
           .age()
           .roles(roles)
           .build();
           

輸出的碼流

[, , , , , , , , , , , , , , , , , , , , , , , , , , , -, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , -, , , , , , , , , , -, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]
           

現在對碼流進行分析,其實也是對hessian序列化的分析

:C ,代表class

, 全類類名長度 
, , ,  com
, 
, , , spy
, 
, , , , test 
, 
, , , , , , ,:hessian 
, 
, , , :User

-, 類中字段個數(個字段+)

, 
, , , , , ,  字段名稱 userId
, 
, , , , , , , , userCode
, 
, , , , , , , , userName
, 
, , , , ,  email
, 
, , , age
, 
, , , , , roles 
, (+)是引用次數


-, 
, , , , , 
, , , 
 , N email字段為null
-, age=
, (+) list大小 java.util.Arrays$ArrayList
, list type大小(即java.util.Arrays$ArrayList的長度)
, , , , , , , , , , , , , , , , , , , , , , , , , , (即java.util.Arrays$ArrayList)
, 
, , , , (admin)
           

更多的協定規範可以參考hessian2規範