Java-Maven⼯程(Springboot)中使⽤Protobuf
Protobuf简单介绍:
官⽅:Protocol buffers 是⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。Protocol Buffers 是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法-可类⽐ XML,但是⽐ XML 更⼩(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
你可以定义数据的结构,然后使⽤特殊⽣成的源代码轻松的在各种数据流中使⽤各种语⾔进⾏编写和读取结构数据。你甚⾄可以更新数据结构,⽽不破坏由旧数据结构编译的已部署程序。
Protocal Buffers(简称protobuf)是⾕歌的⼀项技术,⽤于结构化的数据序列化、反序列化,常⽤于RPC 系统(Remote Procedure Call Protocol System)和持续数据存储系统。
其类似于XML⽣成和解析,但protobuf的效率⾼于XML,不过protobuf⽣成的是字节码,可读性⽐XML差,类似的还有json、Java的Serializable等。
很适合做数据存储或 RPC 数据交换格式。可⽤于通讯协议、数据存储等领域的语⾔⽆关、平台⽆关、可扩展的序列化结构数据格式。⼀.环境搭建
下载后,将的路径配置到环境变量Path中,如下图:
然后再cmd中运⾏ protoc 出现如下画⾯,则表⽰配置成功:
也可以通过查看版本判端是否成功:
这样我们就可以⽤命令编译 .proto ⽂件了,命令如下:
protoc --java_out=D:/test/ person.proto
⼆.Idea安装Protobuf Support插件,如下图:
我们通常都⽤IDE进⾏开发,⽼在命令⾏编译,很不⽅便,所以要在idea⾥使⽤。
三.Maven⼯程中使⽤
注意:这⾥⽤的springboot⽅式。
pom中引⼊如下依赖:
<dependency>
<groupId&le.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.9.1</version>
</dependency>
并加⼊如下plugin
<plugin>
<groupId&lstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<!--注意:此处是你电脑安装的的⽬录-->
<protocExecutable>D:/DevTools/protoc-3.10.0-rc-1-win64/</protocExecutable> </configuration>
</plugin>
编写.proto⽂件
在src/main下新建proto包,在proto下新建person.proto⽂件,⽂件内容如下:
springboot结构
syntax = "proto3";
option java_package = "ity";
option java_outer_classname = "PersonEntity";
message Person {
int32 id = 1;
string name = 2;
string email = 3;
}
注意:关于proto⽂件的编写语法规则,如果有时间会有⼀篇⽂章专门介绍。⽬录结构如下:
编译⽣成java类⽂件
如下如,双击执⾏即可(就是这么简单哦)
执⾏⽇志:
"D:\Program Files\Java\jdk1.8.0_161\" -Dmaven.multiModuleProjectDirectory=E:\2019code\demo -Dmaven.home=D:\DevTools\apache-maven -3.3.9 -f=D:\DevTools\apache-maven-3.3.9\f "-javaagent:D:\DevTools\IntelliJ IDEA 2019.1.1\lib\idea_rt.jar=64510:D:\DevTools\ IntelliJ IDEA 2019.1.1\bin" -ding=UTF-8 -classpath D:\DevTools\apache-maven-3.3.9\boot\plexus-classworlds-2.5.2.dehaus.classworlds .Launcher -Didea.version2019.1.lstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile
[INFO] Scanning
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- protobuf-maven-plugin:0.6.1:compile (default-cli) @ demo ---
[INFO] Compiling 1 proto file(s) to E:\2019code\demo\target\generated-sources\protobuf\java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.369 s
[INFO] Finished at: 2019-09-19T17:02:25+08:00
[INFO] Final Memory: 21M/309M
[INFO] ------------------------------------------------------------------------
执⾏完成后,会在target/generated-sources/protobuf/下⽣成对应⽂件,如下图:
四.测试序列化/反序列化
新建测试类ProtobufTest.java,如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。