Java 中使用 protobuf :入门基础篇,看这篇就够了! | 您所在的位置:网站首页 › proto文件如何管理 › Java 中使用 protobuf :入门基础篇,看这篇就够了! |
一、什么是 protobuf ?
1、protobuf 来源?
Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。 2、官方解释Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。 你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序 3、如何更快理解 protobuf ?protobuf 就是一个序列化数据和反序列化数据的方法,类似的还有 XML、Json、Java 的 Serializable 等。 但protobuf的效率高于XML、Json,不过protobuf生成的是字节码,可读性相比之略差 二、protobuf 环境配置 1、下载编译器编译器下载地址 https://github.com/protocolbuffers/protobuf/releases 选择自己需要的版本下载即可,我这里下载的是 win64 3.15.3,下载之后进行解压 2、配置环境变量path 系统变量中增加配置,也就是你的解压文件位置 D:\Developer\protoc-3.15.3-win64\bin cmd 之后,输入 protoc 查看版本 protoc --version 这样我们就可以在命令行去生成 proto 文件了,但是命令行太不方便,我就没有尝试了,直接上手 idea。 三、idea 中使用 protobuf 1、idea 安装 protobuf 相关插件安装这两个插件即可,安装之后重启 idea 一个是根据 .proto 文件来生成 proto 对象 一个是使得 idea 支持我们的 proto 语法,例如关键词高亮等功能 重启之后我们可以在工具栏看到这两个选项 一个是配置全局的 protobuf 一个是生成所有的 protobuf 文件 protoc path :我们下载的 protobuf 编辑器的位置,在 bin 目录下有一个 .exe 文件 quick gen : 对应的语言,这里选择伟大的 Java 创建一个简单的 springboot 项目或者 maven 项目 引入相关依赖,这里的依赖版本和我们的编辑器一个版本就好 maven 版本 com.google.protobuf protobuf-java 3.15.3 com.google.protobuf protobuf-java-util 3.15.3gradle 版本 compile 'com.google.protobuf:protobuf-java:3.15.3' compile 'com.google.protobuf:protobuf-java-util:3.15.3' 1、编写 .proto 文件在 resource 资源文件夹下面创建一个 proto 文件夹 新建一个 demo.proto 内容如下 //使用 proto3 语法 ,未指定则使用proto2 syntax = "proto3"; //生成 proto 文件所在包路径 package com.wxw.notes.protobuf.proto; //生成 proto 文件所在包路径 option java_package = "com.wxw.notes.protobuf.proto"; //生成 proto 文件名 option java_outer_classname="DemoProto"; message Demo{ //自身属性 int32 id = 1; string code = 2; string name = 3; }如果发现有这种红色标识,千万不要以为是我们 Java 里面的异常错误,这只是 proto 的语法高亮(逼死强迫症,我当时也纠结了半天,是不是我写错了) 选中我们新建的.proto 文件,右键,选择框中的选项就可以生成了 尽管我们设置了生成目录,还是会生成到当前这个文件夹下,可自行研究下具体原因,我们复制到 java 文件夹下 运行之后 至此,一个简单的 protobuf 的就写好了。 五、继续深入 1、protobuf 有没有数据类型?protobuf 怎么与 Java 数据类型对应? 2、protobuf 怎么运用到我们的项目当中?复杂的 List、Map、内嵌对象等等怎么实现? 3、protobuf 怎么和 JSON 互相转换? 4、protobuf 与 Java 对象互转请看下一篇: 你想要的我都有! |
CopyRight 2018-2019 实验室设备网 版权所有 |