|
1.说明
本文介绍Protobuf生成Java代码的方法,
下载必须的Protobuf工具,
然后通过命令行,
把.proto文件生成Java代码。
2.准备Protobuf工具
2.1.获取protoc软件
用于处理proto文件的工具软件,
用其对proto文件生成消息对象
和序列化及反序列化的Java实体类。
下载地址:
https://repo1.maven.org/maven2/com/google/protobuf/protoc/3.12.0/
这里下载适配Windows 64位系统的软件:
protoc-3.12.0-windows-x86_64.exe
2.2.获取protoc-gen-grpc-java插件
用于处理rpc定义的插件,
用其生成针对rpc定义的Java接口。
下载地址:
https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.32.1/
这里下载适配Windows 64位系统的软件:
protoc-gen-grpc-java-1.32.1-windows-x86_64.exe
把上面下载的两个文件放到同一个目录下,
比如C:\developtools\Protobuf。
3.创建.proto文件
在Protobuf下新建proto目录,
在里面创建helloworld.proto文件:
// 显示声明使用proto3, 否则使用默认的proto2syntax = "proto3";// 生成类的包名option java_package = "com.asiainfo.yuwen.grpc.helloworld";// 生成类的文件名,否则默认生成的类名为proto文件名的驼峰命名option java_outer_classname = "HelloWorldProto";// 定义的所有消息、枚举和服务生成对应的多个类文件,而不是以内部类的形式出现option java_multiple_files = false;// greeting服务定义service Greeter { // sayHello方法,格式为"方法名 请求参数 返回参数" rpc SayHello (HelloRequest) returns (HelloReply) {} // 另一个sayHello方法 rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}}// 方法请求,包含用户名message HelloRequest { string name = 1;}// 方法响应,包含响应的消息message HelloReply { string message = 1;}4.执行命令行
在Protobuf下新建java目录,
用于保存生成的Java代码。
首先生成消息对象:
protoc-3.12.0-windows-x86_64.exe --java_out=java --proto_path=proto proto/helloworld.proto
然后生成GRPC接口:
protoc-3.12.0-windows-x86_64.exe --plugin=protoc-gen-grpc-java=protoc-gen-grpc-java-1.32.1-windows-x86_64.exe --grpc-java_out=java --proto_path=proto proto/helloworld.proto
生成目录和文件结果如下:
Protobuf|-- java| `-- com| `-- asiainfo| `-- yuwen| `-- grpc| `-- helloworld| |-- GreeterGrpc.java| `-- HelloWorldProto.java|-- proto| `-- helloworld.proto|-- protoc-3.12.0-windows-x86_64.exe`-- protoc-gen-grpc-java-1.32.1-windows-x86_64.exe5.进阶使用
Protobuf生成Java代码的方法,
不仅可以使用命令行,
也可以通过Maven的方式,
更加简介和方便,
其实Maven底层也是使用的命令行,
具体方法请参考:
Protobuf生成Java代码(Maven) |
|