Protobuf生成Java代碼(命令行) 1.說明 2.準備Protobuf工具 3.創建.proto文件 4.執行命令行 5.進階使用

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章