# funny-grpc **Repository Path**: funny_bro/funny-grpc ## Basic Information - **Project Name**: funny-grpc - **Description**: Springboot 整合 gRpc - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2025-01-03 - **Last Updated**: 2025-11-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # funny-grpc

Spring Boot JDK gRPC gRPC Spring Boot Starter

## 📖 项目简介 这是一个基于Spring Boot 3和JDK 21的gRPC集成示例项目。该项目演示了如何在Spring Boot应用程序中使用gRPC进行服务间通信,包括gRPC服务端和客户端的完整实现。 ### 功能特性 - ✅ 基于Spring Boot 3.2.0 - ✅ 使用JDK 21 - ✅ 集成gRPC 1.51.0 - ✅ 使用gRPC Spring Boot Starter简化开发 - ✅ 提供完整的客户端和服务端示例 - ✅ 支持两种客户端调用方式(注解注入和手动构建) ## 🏗️ 项目架构 ``` funny-grpc ├── funny-client # gRPC客户端模块 ├── funny-grpclib # gRPC共享库模块(proto定义和生成代码) └── funny-server # gRPC服务端模块 ``` ### 模块说明 | 模块 | 说明 | |------|------| | funny-client | gRPC客户端,提供REST接口调用gRPC服务 | | funny-grpclib | 包含.proto文件和生成的gRPC代码,供客户端和服务端共享使用 | | funny-server | gRPC服务端,实现具体的业务逻辑 | ## 🚀 技术栈 | 技术 | 版本 | |------|------| | JDK | 21 | | Spring Boot | 3.2.0 | | gRPC | 1.51.0 | | gRPC Server | 2.14.0.RELEASE | | gRPC Client | 2.14.0.RELEASE | | Undertow | (内嵌Web服务器) | | Hutool | 5.8.10 | | Lombok | - | ## 🔧 快速开始 ### 环境要求 - JDK 21 - Maven 3.6+ ### 构建项目 ```bash # 克隆项目 git clone # 进入项目目录 cd funny-grpc # 编译项目 mvn clean install ``` ### 运行服务 1. 启动gRPC服务端: ```bash cd funny-server mvn spring-boot:run ``` 2. 启动gRPC客户端: ```bash cd funny-client mvn spring-boot:run ``` ### 测试接口 服务启动后,可以通过以下接口测试gRPC调用: 1. 方式一(使用注解注入的客户端): ``` GET http://localhost:9001/grpc/printMessageOne?name=world ``` 2. 方式二(手动构建客户端): ``` GET http://localhost:9001/grpc/printMessageTwo?name=world ``` 预期响应: `Hello world` ## 📁 项目结构详解 ### funny-grpclib(gRPC共享库) 包含`.proto`文件定义和生成的Java代码: - [HelloWorld.proto](funny-grpclib/src/main/proto/HelloWorld.proto):定义了gRPC服务和消息格式 - 生成的[HelloGrpc.java](funny-grpclib/src/main/java/com/study/funny/lib/HelloGrpc.java)和[HelloWorldProto.java](funny-grpclib/src/main/java/com/study/funny/lib/HelloWorldProto.java):gRPC服务端和客户端代码 ### funny-server(gRPC服务端) 实现了gRPC服务的具体业务逻辑: - [HelloGrpc.java](funny-server/src/main/java/com/study/funny/grpc/HelloGrpc.java):gRPC服务实现类 - [application.yml](funny-server/src/main/resources/application.yml):服务端配置文件 ### funny-client(gRPC客户端) 提供了调用gRPC服务的REST接口: - [GrpcClientService.java](funny-client/src/main/java/com/study/funny/grpc/GrpcClientService.java):gRPC客户端服务类,实现了两种调用方式 - [GrpcClientController.java](funny-client/src/main/java/com/study/funny/controller/GrpcClientController.java):REST控制器 - [application.yml](funny-client/src/main/resources/application.yml):客户端配置文件 ## ⚙️ 配置说明 ### 服务端配置 ```yaml # HTTP服务器端口 server: port: 9002 # gRPC服务器端口 grpc: server: port: 9000 ``` ### 客户端配置 ```yaml # HTTP服务器端口 server: port: 9001 # gRPC客户端配置 grpc: client: funny-server: address: 'static://127.0.0.1:9000' negotiationType: plaintext ``` ## 💬 联系方式 如有问题,请提交Issue或联系项目维护者。