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, 否则使用默认的proto2
syntax = "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.exe
5.进阶使用
Protobuf生成Java代码的方法,
不仅可以使用命令行,
也可以通过Maven的方式,
更加简介和方便,
其实Maven底层也是使用的命令行,
具体方法请参考:
Protobuf生成Java代码(Maven)
网友评论