官方提供的库太复杂,这里想简单快速的使用protobuf格式序列化和反序列操作 使用baidu的jprotobuf来完成 想快速使用只需要以下简单三步
第一 引入maven库
版本自己上仓库查看
<dependency>
<groupId>com.baidu</groupId>
<artifactId>jprotobuf</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>com.baidu</groupId>
<artifactId>jprotobuf-precompile-plugin</artifactId>
<version>2.2.2</version>
</dependency>
第二 使用注解注解实体
protobuf是一种它描述格式,需要有描述文件来描述具体的protobuf文件的字段信息,jprotobuf使用注解来描述,简单易用。
@ProtobufClass
public class Entity {
@Protobuf(fieldType= FieldType.STRING, order=1)
private String id;
@Protobuf(fieldType= FieldType.Integer, order=2)
private Integer num;
//这里不写get;set
}
order为标识字段的序号,protobuf解析与字段名无关,与order序号有关
fieldType 为注解字段类型,建议基本字段类型使用包装类型
其中byte[]类型字段使用fieldType.BYTES
其中数组和对象类型字段使用fieldType.OBJECT
其中map类型字段使用fieldType.MAP
其中枚举类型字段使用fieldType.ENUM
第三 序列化和反序列化实体
这里比较简单,使用如下代码
public void test(){
Codec<Entity> codec = ProtobufProxy.create(Entity.class);
Entity m=new Entity();
byte[] b =codec.encode(m);
Entity m2= codec.decode(b);
}
注意数组对象不能用此方法序列化和反序列化。