spring-boot整合protobuf-阿里云开发者社区

开发者社区> Java技术进阶> 正文

spring-boot整合protobuf

简介: protobuf区是Google的语言中立,平台中立,可扩展的机制,用于序列化结构化数据 - 想想XML,但更小,更快,更简单。您可以定义数据的结构化结构,然后使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流,并使用各种语言。

简介:
protobuf是Google的语言中立,平台中立,可扩展的机制,用于序列化结构化数据 - 想想XML,但更小,更快,更简单。您可以定义数据的结构化结构,然后使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流,并使用各种语言。
1.在项目中导入依赖

  <dependency>
        <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>3.8.0</version>
</dependency>

2.创建ReturnVO. proto文件

syntax = "proto3";        // PB协议版本
message ReturnVO{
    string code = 1;             // 支付相关的字段信息
      string message = 2;          // optional 为可选参数
      string data = 3;          // required为必填参数
 }

3.使用idea进行生成Java文件ReturnVOProto.java
idea实现protobuf的.proto文件编译成.java文件教程
4.使用protobuf

    @Test
    public void contextLoads() {
        System.out.println("===== 构建一个returnVO模型开始 =====");
        ReturnVOProto.ReturnVO.Builder builder = ReturnVOProto.ReturnVO.newBuilder();
        builder.setCode("200");
        builder.setData("OK");
        builder.setMessage("GO");


        ReturnVOProto.ReturnVO returnVO = builder.build();
        System.out.println(returnVO.toString());
        System.out.println("===== 构建returnVO模型结束 =====");

        System.out.println("===== returnVO Byte 开始=====");
        for(byte b : returnVO.toByteArray()){
            System.out.print(b);
        }
        System.out.println("\n" + "returnVO" + returnVO.toByteString().size());
        System.out.println("===== returnVO Byte 结束 =====");

        System.out.println("===== returnVO 反序列化生成对象开始 =====");
        ReturnVOProto.ReturnVO returnVO1 = null;
        try {
            returnVO1 =ReturnVOProto.ReturnVO.parseFrom(returnVO.toByteArray());
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
        System.out.print(returnVO1.toString());
        System.out.println("===== returnVO 反序列化生成对象结束 =====");

    }

5.结果

===== 构建一个returnVO模型开始 =====
code: "200"
message: "GO"
data: "OK"

===== 构建returnVO模型结束 =====
===== returnVO Byte 开始=====
10350484818271792627975
returnVO13
===== returnVO Byte 结束 =====
===== returnVO 反序列化生成对象开始 =====
code: "200"
message: "GO"
data: "OK"
===== returnVO 反序列化生成对象结束 =====

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
Java技术进阶
使用钉钉扫一扫加入圈子
+ 订阅

Java技术进阶成长,课程资料,案例解析,实战经验全都有!

官网链接