springboot simple (10) springboot protobuf

1 protobuf简介

protocolbuffer(以下简称protobuf)是google 的一种数据交换的格式,它独立于语言,独立于平台。

google 提供了多种语言的实现:java、c#、c++、go 和python,每一种实现都包含了相应语言的编译器以及库文件。
它是一种二进制的格式,可以把它用于分布式应用之间的数据通信。

2 protobuf下载和安装

下载地址:https://github.com/protocolbuffers/protobuf/releases
我这里下载的是win 64位。
在这里插入图片描述
直接解压即可。

3 springboot protobuf集成开发

第1步:编写heroic.proto文件。

syntax = "proto3";
// 表示生成的序列化器的Java包
option java_package = "org.feidao.chapter81.model";
// 表示生成的Java序列化器的类名
option java_outer_classname = "HeroicFactory";

message Heroic {
	 int64 id = 1;
	 string name = 2;
	 string remarks = 3;
}

第2步:根据heroic.proto文件生成java文件。
Cmd进入bin目录,输入命令:protoc --java_out=. ./heroic.proto
在这里插入图片描述
执行后会生成对应的java文件。
注意:proto文件和生成的Java文件名称不能一致!

第3步:新建springboot工程,将生成的java文件拷贝到项目中,pom文件引入:

		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java</artifactId>
			<version>3.21.11</version>
		</dependency>
		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java-util</artifactId>
			<version>3.21.11</version>
		</dependency>
		<dependency>
			<groupId>com.googlecode.protobuf-java-format</groupId>
			<artifactId>protobuf-java-format</artifactId>
			<version>1.4</version>
		</dependency>

第4步:调用实现序列化:

 HeroicFactory.Heroic.Builder builder = HeroicFactory.Heroic.newBuilder();
        long lId = 0l;
        try {
            lId = Long.parseLong(id);
        }catch (Exception e){
            e.printStackTrace();
        }
        builder.setId(lId);
        builder.setName(name);
        builder.setRemarks(remarks);
        HeroicFactory.Heroic  heroic= builder.build();
        //转换成字节数组
        byte[] bytes = heroic.toByteArray();
        log.info("序列化:" + Arrays.toString(bytes));

反序列化:

        try {
            HeroicFactory.Heroic deserializeHeroic = HeroicFactory.Heroic.parseFrom(bytes);
            log.info("反序列化:");
            log.info("id:" + deserializeHeroic.getId());
            log.info("name:" + deserializeHeroic.getName());
            log.info("remarks:" + deserializeHeroic.getRemarks());
        }catch (Exception e){
            e.printStackTrace();
        }

4 测试验证

postman发送请求:
在这里插入图片描述
序列化log:
在这里插入图片描述
反序列化log:
在这里插入图片描述
代码详见:
https://gitee.com/linghufeixia/springboot-simple
chapter8-1


教程列表
springboot simple(0) springboot简介
springboot simple(1) springboot Helloworld
springboot simple(2) springboot Starter
springboot simple(3 )springboot Web开发
springboot simple(4)springboot 数据持久化
springboot simple (5) springboot Nosql
springboot simple (6) springboot mqtt
springboot simple (7) springboot thrift
springboot simple (8) springboot kafka
springboot simple (9) springboot jpa(Hibernate)
springboot simple (10) springboot protobuf
springboot simple (11) springboot protostuff
springboot simple (12) springboot RabbitMQ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Protobuf是一种数据序列化格式,它可以将结构化数据转换为二进制格式,以便在网络传输或存储时使用。在Spring Boot中,可以通过集成Protobuf来实现与Protobuf数据的交互。首先,你需要下载Protobuf的安装包,可以在官方网站\[2\]上找到下载地址。下载完成后,解压安装包即可。接下来,在Spring Boot项目中配置Protobuf的序列化器。你可以创建一个名为CommonConfig的配置类,并在其中定义一个ProtobufHttpMessageConverter的Bean,用于处理Protobuf数据的转换\[3\]。这样,你就可以在Spring Boot中使用Protobuf进行数据的传输和处理了。 #### 引用[.reference_title] - *1* *2* [springboot simple (10) springboot protobuf](https://blog.csdn.net/afei8080/article/details/128297408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ProtoBuf及整合到SpringBoot](https://blog.csdn.net/yangzhe19931117/article/details/130177306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值