CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
gRPC 入门/课时/代码生成
RawBlame
课时目录12 节

gRPC 入门

  1. 01gRPC 是什么
  2. 02Protocol Buffers
  3. 03代码生成
  4. 04Java 服务端
  5. 05Java 客户端
  6. 06流式 RPC
  7. 07Spring gRPC 集成
  8. 08状态与错误
  9. 09gRPC-Gateway
  10. 10gRPC vs REST
  11. 11TLS 与安全
  12. 12综合练习

代码生成

protoc、Java stub/skeleton。

30 分钟

代码生成

protoc 编译 .proto 生成 Java message 类与 gRPC stub/skeleton。Maven/Gradle 插件可在 compile 阶段自动执行,避免手写序列化代码。

学习目标

  • 配置 protobuf-maven-plugin(或 Gradle equivalent)
  • 理解 *Grpc 类、TrackServiceGrpc.TrackServiceImplBase 职责
  • 在 lab 模块生成代码,不替换现有 REST Controller

核心内容

Maven 插件片段

<plugin>
  <groupId>org.xolstice.maven.plugins</groupId>
  <artifactId>protobuf-maven-plugin</artifactId>
  <version>0.6.1</version>
  <configuration>
    <protocArtifact>com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}</protocArtifact>
    <pluginId>grpc-java</pluginId>
    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.64.0:exe:${os.detected.classifier}</pluginArtifact>
  </configuration>
  <executions>
    <execution>
      <goals><goal>compile</goal><goal>compile-custom</goal></goals>
    </execution>
  </executions>
</plugin>

依赖:grpc-netty-shaded、grpc-protobuf、grpc-stub;Java 9+ 需 javax.annotation-api。

生成物一览

文件用途
Track.javamessage POJO + Builder
TrackServiceGrpc.javanewStub / newBlockingStub / bindService
TrackServiceImplBase服务端继承并实现 RPC 方法
mvn generate-sources
# target/generated-sources/protobuf/...

生成代码 勿手改;改契约只改 .proto 再编译。与 spring-boot-essentials 中 MapStruct/DTO 思路类似——generated vs hand-written 分层。

lab 模块布局建议

platform-api/          ← REST TrackController(生产)
platform-grpc-lab/     ← proto + gRPC server(profile lab-grpc)

graphql-essentials 实验也是 独立 profile;gRPC 同理,避免污染默认 8080 REST 行为。

练习

  • 执行 mvn compile,在 target/ 找到 TrackServiceGrpc
  • 修改 .proto 增字段,观察编译报错如何提示 field number
  • 在 .gitignore 确认是否忽略 target/(生成物不入库)
  • 小结

    protoc 把 .proto 变成类型安全的 Java API。 下一课实现 TrackServiceImplBase 启动 gRPC Server。

    加载本节练习…
    ← 上一课Protocol Buffers下一课 →Java 服务端