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 反序列化生成对象结束 =====
相关文章
|
4月前
|
JavaScript 安全 Java
Spring Boot中的版本兼容性处理
Spring Boot中的版本兼容性处理
|
XML 安全 Java
Spring Boot 中的 Spring Security 是什么,如何使用
Spring Boot 中的 Spring Security 是什么,如何使用
|
6月前
|
安全 Java 数据安全/隐私保护
Spring Boot 3 集成 Jasypt详解
随着信息安全的日益受到重视,加密敏感数据在应用程序中变得越来越重要。Jasypt(Java Simplified Encryption)作为一个简化Java应用程序中数据加密的工具,为开发者提供了一种便捷而灵活的加密解决方案。
614 3
Spring Boot 3 集成 Jasypt详解
|
11月前
|
Java Maven
编写一个spring-boot-starter-fastjson
编写一个spring-boot-starter-fastjson
62 0
|
JSON Java API
Spring Boot之Jackson快速入门,你必须得会!
在上一期《SpringBoot之Jackson配置全局时间日期格式》文中提到Jackson,了解到有很多小伙伴对它很感兴趣;顾这一期,我就重点带着大家以最基础的教学方式领大家入门,废话不多说,咱们这就开始。
|
数据可视化 JavaScript 前端开发
Spring Boot集成Swagger2
你好看官,里面请!今天笔者讲的是Spring Boot集成Swagger2。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
234 1
|
XML 负载均衡 Java
spring boot 和spring cloud 的简介
spring boot 和spring cloud 的简介
spring boot 和spring cloud 的简介
|
安全 Java 开发者
【Spring Boot 快速入门】六、Spring Boot集成Lombok
【Spring Boot 快速入门】六、Spring Boot集成Lombok
175 0
【Spring Boot 快速入门】六、Spring Boot集成Lombok
|
Java Apache Maven
Spring Boot 源码编译
Spring Boot 源码编译
299 0
|
Java Spring 数据格式
开发一个Spring Boot Starter!
开发一个Spring Boot Starter!在上一篇文章中,我们已经了解了一个starter实现自动配置的基本流程,在这一小结我们将复现上一过程,实现一个自定义的starter。 先来分析starter的需求: 在项目中添加自定义的starter依赖,自动在Spring中加载starter中的Bean;从application.properties中加载指定配置创建项目先创建一个名为starter的项目。
1430 0