1.背景
2.环境安装
2.1.编译器安装
a.下载编译器
地址:https://github.com/protocolbuffers/protobuf/releases
选项如下(根据不同的编译环境选择)
b.配置环境变量
解压后包结构如下:
将路径配置到path路径下:
c.检查配置是否正确
编译环境配置完成.
2.2.开发环境
根据官方文档在项目中引入protocol buffer依赖包
dependencies {
compile(
"com.google.protobuf:protobuf-java:3.9.2",
"com.google.protobuf:protobuf-java-uti:3.9.2"
)
}
3.简易demo
项目结构:
3.1.编写proto文件
//Student.proto是文件名 //协议名称 syntax = "proto2"; //包名,通常与java_package一样 package com.wfd360.demo06; //optimize_for是文件级别的选项,Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。 //SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。 option optimize_for = SPEED; //类的包名 option java_package = "com.wfd360.demo06"; //类名 option java_outer_classname = "MyDataInfo"; //内部类名称 message Person { optional string name = 1; optional int32 age = 2; optional string address = 3; } //执行如下命令生成java代码 /*D:Program Filesprotoc-3.9.2in>protoc --java_out=E:workroomstudy ettysrcmainjava --proto_path=E:workroomstudy ettysrcprotocolBuffer Student.proto */ //--java_out:java文件生成的路径 //--proto_path:proto文件路径 //特别注意:生成的java文件千万不能修改
3.2.执行命令生成java文件
//执行如下命令生成java代码 /*D:Program Filesprotoc-3.9.2in>protoc --java_out=E:workroomstudy ettysrcmainjava --proto_path=E:workroomstudy ettysrcprotocolBuffer Student.proto */ //--java_out:java文件生成的路径 //--proto_path:proto文件路径 //特别注意:生成的java文件千万不能修改
3.3.使用生成的java文件
package com.wfd360.demo06; import com.google.protobuf.InvalidProtocolBufferException; public class TestProtocolBuffer { /** * 测试: * 1.利用protocol buffer将数据封装到对象 * 2.将得到的对象转变为byte[](相当于序列化) * 3.将数组转变为对象(相当于反序列化) * @param args */ public static void main(String[] args) throws InvalidProtocolBufferException { //1.利用protocol buffer将数据封装到对象 MyDataInfo.Person person = MyDataInfo.Person.newBuilder(). setAddress("北京").setAge(18).setName("无忌").build(); //2.将得到的对象转变为byte[](相当于序列化) byte[] bytes = person.toByteArray(); //3.将数组转变为对象(相当于反序列化) MyDataInfo.Person person1 = MyDataInfo.Person.parseFrom(bytes); System.out.println("==>"+person1.getName()); System.out.println("==>"+person1.getAge()); System.out.println("==>"+person1.getAddress()); } }
完美!