在idea工具下,使用protobuf自动生成java代码,超详细教程

news/2025/3/15 0:05:20/

新项目需要使用google protobuf 生成java代码

开始第一步,网上很多教程都说下载protobuf support插件,但是我下载了很多idea版本,就是找不到这个protobuf support 插件

在idea 中选择file ->settings ->plugin , 搜索protobuf,一般都是有以下几个选项:

这里,我选择下载

protobuf  generate 、-------- 生成的插件

protobuf  highlighted、--------语法高亮

Protocol Buffers ----------语法支持

盲猜protobuf support 是上面几个插件的集成,因为我一直搜不到,所以就没试过使用protobuf support ,但是要生成代码,用上面三个插件就够了。

第二步:上面的插件装完重启后,新建一个maven项目,打开IDEA,选择“New Project”,选择Maven,选择Java版本,然后填写项目信息,创建一个新的Maven项目。

第三步,在pom.xml文件引入以下依赖:

 <dependency><groupId>io.grpc</groupId><artifactId>grpc-netty-shaded</artifactId><version>1.34.1</version></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-protobuf</artifactId><version>1.34.1</version></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-stub</artifactId><version>1.34.1</version></dependency>

这些依赖将帮助我们引入gRPC和protobuf库。

第四步,编写.proto文件

在项目的src/main/proto目录下创建一个名为helloworld.proto的文件,内容如下:

syntax = "proto3";option java_multiple_files = true;
option java_package = "com.example.grpc";
option java_outer_classname = "HelloWorldProto";package helloworld;message HelloRequest {string name = 1;
}message HelloResponse {string message = 1;
}service HelloService {rpc sayHello(HelloRequest) returns (HelloResponse);
}

该文件定义了一个HelloWorld服务和两个请求和响应消息。

第五步:下载protoc.exe编译器

下载地址:Releases · protocolbuffers/protobuf · GitHub

下载完后解压,然后配置环境变量:PROTOCBUF_HOME

 然后再在系统变量的PATH下面,增加: %PROTOCBUF_HOME%\bin

 

然后打开命令提示符: 输入protoc,

  弹出上面的提示,说明成功了

第六步:生成java代码

idea -> tools–>configure genprotobuf
a).配置protoc path(指定第五步解压后的protoc可执行文件路径),
b).Quick Gen: 选择java
c).输出路径:勾选java,并指定protoc生成的java文件需要存放的路径

 

开始生成java客户端文件

点击: tools–>Generate all Protobufs

 

成功生成以下代码:

 


http://www.ppmy.cn/news/68465.html

相关文章

【Linux内核】自旋锁spinlock机制

自旋锁 Note: 在使用自旋锁时应该避免长时间持有锁&#xff0c;否则可能会导致其他线程或进程无法访问共享资源。因此&#xff0c;建议将锁的持有时间尽量缩短&#xff0c;以提高系统的并发性能。 Linux中的自旋锁机制是一种用于同步多个线程或进程访问共享资源的技术。当一个…

Matlab 堆叠张量

Matlab 堆叠张量 有时候我们需要堆叠多个 Tensor&#xff0c;例如重建了 N N N 张 74 66 70 74\times66\times70 746670的磁共振图像&#xff0c;我们希望打包成 N 74 66 70 N \times 74 \times 66\times70 N746670用于深度学习相关任务。 对于熟悉 numpy 和 PyTorch …

设计模式——单一职责模式之装饰模式

文章目录 前言一、“单一职责” 模式二、Decorator 装饰模式1、动机2、模式定义3、伪代码示例①、第一种写法②、第二种写法③、第三种写法 4、结构 总结 前言 一、“单一职责” 模式 在软件组件的设计中&#xff0c;如果责任划分的不清晰&#xff0c;使用继承得到的结果往往是…

JVM问题排查和垃圾回收机制

文章目录 JVM问题排查和垃圾回收机制JVM线程共享区哪些可以作为GC Roots如何排查JVM问题JVM参数调优JVM与垃圾回收器Java垃圾回收机制标记-清除与标记-整理算法标记-清除算法标记-整理算法 JVM问题排查和垃圾回收机制 JVM线程共享区 JVM内存区主要分为5个区域: 程序计数器:每…

Oracle监听的优化思路

Oracle监听的优化思路优化思路如下&#xff1a; 为减少客户端和服务端网络之间TCP包的传输数量&#xff0c;可在sqlplus客户端设置参数ARRAYSIZE。假设ARRAYSIZE默认大小为15&#xff0c;表示应用每次将获取15行的数据。如果TCP包大小&#xff08;排除包头等元数据之后&#x…

也谈零基础学编程,需要学什么

也谈零基础学编程&#xff0c;需要学什么 零基础人群语法1、注释2、变量2.1 变量命名2.2 数据类型2.3 类型强度 3、 运算符4、流程控制与代码块5、函数和方法6、类 算法学会使用第三方库小结 零基础人群 现在开发语言各种各样&#xff0c;越来越多&#xff0c;尤其是 python &…

微服务学习笔记--(Gateway网关)

统一网关Gateway 为什么需要网关gateway快速入门断言工厂过滤器工厂全局过滤器跨域问题 Gateway网关-网关作用介绍 为什么需要网关 网关功能&#xff1a; 身份认证和权限校验服务路由、负载均衡请求限流 网关的技术实现 在SpringCloud中网关的实现包括两种&#xff1a; …

ORACLE 新闻速递 ORACLE 23C 免费提供给开发者 为什么???

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…