protobuf初見
今天由于偶然的機會扛禽,了解到Google的protobuf,貌似功能很強大缝驳。
主要作用是自動生成實體類工具连锯,并形成標準的java文件,用起來非常方便用狱。
具體的格式可以參見:https://github.com/google/protobuf
實現(xiàn)步驟
第一步:環(huán)境準備
下載
首先需要下載protobuf-2.5.0-windows.zip运怖,解壓后得到一個protoc.exe文件,這個是可以自動生成實體類的工具夏伊。
第二摇展、需要新建一個普通的maven工程,其結構是
添加配置信息:
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>RELEASE</version>
</dependency>
同時將protoc.exe文件添加到proto文件夾中溺忧。
在proto文件夾中添加一個文件名為persion-entity.proto的文件:
option java_outer_classname = "PersonEntity";//生成的數(shù)據(jù)訪問類的類名
message Person {
required int32 id = 1;//同上
required string name = 2;//必須字段咏连,在后面的使用中必須為該段設置值
optional string email = 3;//可選字段盯孙,在后面的使用中可以自由決定是否為該字段設置值
}
上面可以看出定義了一個Person類,其中包含id祟滴,name和email屬性振惰,而且id和name是必須項,email是可選項垄懂。
第三骑晶、上面的所有步驟都做了之后,可以使用下面命令產(chǎn)生實體類
protoc.exe --java_out=./ persion-entity.proto
上面的--java_out 是指定輸出路徑草慧,persion-entity.proto為你自己定義的文件
執(zhí)行完之后將會生成一個java文件
其內(nèi)容就是自動生成的桶蛔。
現(xiàn)在測試
package com.protobuf.test;
import com.google.protobuf.InvalidProtocolBufferException;
import com.protobuf.proto.PersonEntity;
public class Test {
public static void main(String[] args) throws InvalidProtocolBufferException {
PersonEntity.Person.Builder builder = PersonEntity.Person.newBuilder();
builder.setId(1);
builder.setEmail("zhangzheming@google.com");
builder.setName("ant");
PersonEntity.Person person = builder.build();
System.out.println("before:"+person.toString());
System.out.println("=============");
for (byte b:person.toByteArray()){
System.out.print(b);
}
System.out.println();
System.out.println(person.toByteArray());
System.out.println("===============");
byte[] byteArray = person.toByteArray();
PersonEntity.Person p2 = PersonEntity.Person.parseFrom(byteArray);
System.out.println("after:"+p2.toString());
}
結果
before:id: 1
name: "ant"
email: "zhangzheming@google.com"
=============
8118397110116262312210497110103122104101109105110103641031111111031081014699111109
[B@573fd745
===============
after:id: 1
name: "ant"
email: "zhangzheming@google.com"