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 反序列化生成对象结束 =====
相关文章
idea实现protobuf的.proto文件编译成.java文件教程
1..proto文件语法高亮显示1.1 打开idea的插件列表1.2 下载protobuf辅助插件1.3 安装好后重启idea 在项目中新增配置生成环境 1.6.1
13927 0
|
11月前
|
存储 SQL 安全
加密后的数据如何进行模糊查询?
在数据安全和隐私保护日益重要的今天,加密技术成为保护敏感数据的重要手段。然而,加密后的数据在存储和传输过程中虽然安全性得到了提升,但如何对这些数据进行高效查询,尤其是模糊查询,成为了一个挑战。本文将深入探讨如何在保证数据安全的前提下,实现加密数据的模糊查询功能。
1285 0
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
存储 SQL Linux
MinIO客户端安装教程(Window版)
MinIO客户端安装教程(Window版)
1635 0
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
缓存 监控 安全
Spring AOP 详细深入讲解+代码示例
Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的技术。它通过将横切关注点(例如日志记录、事务管理、安全性检查等)从主业务逻辑代码中分离出来,以模块化的方式实现对这些关注点的管理和重用。 在Spring AOP中,切面(Aspect)是一个模块化的关注点,它可以跨越多个对象,例如日志记录、事务管理等。切面通过定义切点(Pointcut)和增强(Advice)来介入目标对象的方法执行过程。 切点是一个表达式,用于匹配目标对象的一组方法,在这些方法执行时切面会被触发。增强则定义了切面在目标对象方法执行前、执行后或抛出异常时所
16383 4
|
存储 消息中间件 JSON
DDD基础教程:一文带你读懂DDD分层架构
DDD基础教程:一文带你读懂DDD分层架构
|
前端开发 Java Spring
为什么会出现Request method ‘GET‘ not supported`
为什么会出现Request method ‘GET‘ not supported`
3529 1
|
算法 Java Sentinel
限流算法(计数器、滑动时间窗口、漏斗、令牌)原理以及代码实现
> 本文会对这4个限流算法进行详细说明,并输出实现限流算法的代码示例。 > 代码是按照自己的理解写的,很简单的实现了功能,还请大佬们多多交流找bug。
1664 0
|
数据可视化 算法 API
【README.md 指南 】如何编写 README.md:打造出色的开源项目文档
【README.md 指南 】如何编写 README.md:打造出色的开源项目文档
5220 0