教程:响应式Spring Boot

上个月,Trisha Gee(JetBrains)在SpringOne上演示了使用Spring Boot,Kotlin和JavaFX创建实时股票价格应用程序的演示。 录制了现场演示,并以70分钟的视频形式提供

12月18日,Trisha根据该视频在dzone.com上完成了 Spring Boot反应式教程在dzone.com上的发布,该视频为一系列较短的视频,并附带一个博客文章,解释了每个步骤的过程更加缓慢和详细。

我有将本教程翻译成俄语的想法。 但是,Trisha对我对此的询问很礼貌地回应:
“让我向我的组织查询。 我很想翻译它,但我们可能有一种更好的翻译方式。”

因此,我决定只限于本教程的概述,其中包括以下系列课程:

  1. 构建Kotlin REST服务
  2. 用于反应流的REST客户端
  3. JavaFX Spring Boot应用程序
  4. JavaFX折线图
  5. 共享Bean的自动配置
  6. 显示反应数据
  7. 订阅多个订户
  8. Kotlin RSocket服务器
  9. Java RSocket客户端
  10. Spring Profiles切换客户端

本教程是一系列课程,其中将使用Kotlin内部界面,Java客户端和JavaFX用户界面创建完整的Spring Boot应用程序。

第1部分。在Kotlin上创建REST服务


本教程的第一部分描述了如何在Kotlin上创建Spring Boot应用程序,该应用程序充当应用程序的服务器端。 将创建一个响应式REST服务,您可以在手册的以下部分中连接到该服务。

该博客条目包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

本教程的这一部分包括以下步骤:

  • 创建一个Spring Boot Service项目
  • Spring Boot项目的结构
  • 创建一个REST控制器
  • 创建股票价格数据类
  • 价格产生与回报
  • 应用启动

在本教程的第1部分中完成这些步骤之后,将创建一个简单的Kotlin Spring Boot应用程序,该应用程序使用Reactive Streams每秒发出一次随机生成的股票价格。

本教程第1部分的完整代码可在GitHub上获得

第2部分。用于响应流的REST客户端


本教程的第2部分展示了如何在Spring上创建一个反应性Java客户端,该客户端连接到REST服务,该服务每秒广播一次股价。 该客户端将在手册的后续部分中使用。 在开发过程中,将使用基于TDD的过程来创建客户端并对其进行测试。

博客条目包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

本教程的这一部分包括以下步骤:

  • 为客户创建项目
  • 创建客户类别
  • 创建客户测试
  • 创建客户基准价格方法
  • 创建一个类以保持股价
  • 向测试添加断言
  • 将客户端连接到REST服务
  • 运行集成测试
  • 集成测试中更全面的断言

测试响应式应用程序并非易事,并且肯定有比此简单示例更好的方法。 但是,成功使用集成测试来确定股票价格的API和客户端功能。

该客户端连接到端点,该端点生成由服务器发送的事件,并返回可供其他服务使用的StockPrice对象流。 如何执行此操作将在本系列的下一个视频中显示。

完整的2部分代码可在GitHub上获得

第3部分。JavaFX Spring Boot应用程序


第三个演示展示了如何创建JavaFX应用程序,该应用程序通过Spring Boot启动和管理,以在我们的JavaFX应用程序中使用Spring功能,例如控制反转和依赖注入。

该博客条目还包含一个视频 ,该视频显示了分步过程,并为那些偏爱书面格式的人提供了文字指南(摘录自视频文字稿)。

本教程的这一部分包括以下步骤:

  • 模块设置
  • 更改Spring Boot应用程序类
  • 编辑Spring Boot设置
  • 创建一个JavaFX应用程序类
  • 设置Spring Boot Application类
  • 通过应用程序上下文发布事件
  • 创建应用程序上下文
  • 关闭应用程序上下文
  • 监听应用程序事件

完成本教程的第3步之后,将创建JavaFX应用程序主窗口(阶段-参见JavaFX教程的第2部分 ),它允许您配置用户界面。 接下来,您可以运行我们的StockUIA应用程序,并看到它作为Spring Boot应用程序成功启动。 它还创建了一个Java进程,如果我们创建了该Java进程,它将显示用户界面。 目前,已经成功创建了JavaFX应用程序,可以使用Spring启动和管理JavaFX应用程序,并允许您使用任何Spring应用程序的便捷功能。

完整的3部分教程代码可在GitHub上获得。

第4部分。JavaFX折线图


本教程的这一步中,我们将看到如何创建显示折线图的JavaFX应用程序。 该应用程序将Spring用于重要功能,例如控制反转。

该博客条目包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

本教程的这一部分包括以下步骤:

  • 创建一个场景(场景-参见JavaFX教程的第2部分
  • 使用FXML
  • 创建一个FXML文件
  • 设置应用程序标题
  • application.properties设置应用程序头
  • 从Spring获取JavaFX控制器
  • 创建折线图

完成上述步骤后,本教程的第4部分将创建一个JavaFX应用程序。 启动该应用程序后,我们应该在窗口中看到折线图的轮廓,其中Y轴的价格数字和X轴的时间数字。



创建了集成到Spring Boot中的JavaFX应用程序,该应用程序使用FXML声明应在视图中显示的内容。

本部分教程的完整代码可在GitHub上找到。

第5部分。共享Bean的自动配置


第5课展示了如何通过自动配置在另一个模块中使用Spring Bean。

该博客条目还包含一个视频 ,该视频显示了分步过程,并为那些偏爱书面格式的人提供了文字指南(摘录自视频文字稿)。

在上一课中,创建了一个JavaFX Spring Boot应用程序,该应用程序显示一个空的线图。 在此视频中,我们将看到如何为Spring Bean配置自动配置,以便我们可以使用stock-ui模块中stock-client模块中定义的bean组件。

本教程的这一部分包括以下步骤:

  • 添加对另一个模块的依赖
  • 创建一个WebClientStockClient Bean
  • 打开自动配置

这只是本教程的很小一部分,但是它允许我们创建可以被各种Spring Boot应用程序重用的模块。 现在,我们可以使用ChartController中的客户端连接到价格服务,并开始在折线图上实时显示价格。

部分的完整代码可在GitHub上获得。

第6部分。反应性数据显示


本课讨论将JavaFX图表连接到我们的Kotlin Spring Boot服务以实时显示价格。 该博客条目包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

第四部分中 ,创建了JavaFX Spring Boot应用程序,该应用程序显示了空线图。 最新版本( 第五部分 )使用WebClientStockClient连接到价格服务。 在此部分中,获得了折线图,该折线图实时显示了我们Kotlin Spring Boot服务的价格。

本教程的这一部分包括以下步骤:

  • 配置图表数据
  • 订阅价格数据
  • 价格数据显示
  • 应用启动
  • 角色名称显示
  • 代码清理

本教程此部分中的几行代码创建了一个JavaFX应用程序,该应用程序使用SpringClient连接到Spring Boot服务,订阅无功价格流并在折线图上实时绘制价格。

部分的完整代码可在GitHub上获得。

第7部分。订阅多个订户


上一部分中 ,我们从Reactive Spring Boot服务订阅了JavaFX折线图以获取价格,并实时显示了价格。

本课程中,将最终确定实时更新时间表,以显示多于一只股票的价格,这需要多于一位的消费者订阅我们的被动价格流。

在博客上,您会找到一段视频 ,该视频显示了逐步操作的过程以及针对喜欢书面格式的人的文字说明(摘录自视频的文字记录)。

本教程的这一部分包括以下步骤:

  • 我们实现订户价格
  • 将职责转移给价格订户
  • 添加第二个订户
  • 代码清理
  • 红利重构(不在视频中!)

在本教程的最后,您将创建一个JavaFX应用程序,该应用程序从我们的Spring Boot服务订阅一个以上的价格,并在折线图中以多个系列显示每组实时价格数据。

部分的完整代码可在GitHub上获得。

第8部分。Kotlin RSocket服务器


本课程中 ,新的内部服务将添加到Kotlin,该服务通过RSocket(一种用于响应流的协议)发送价格。 该博客条目包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

在本教程系列的这一阶段,成功创建了一个全面的应用程序,该应用程序从Kotlin Spring Boot服务发布价格,并将其显示在JavaFX折线图上。 它使用HTTP协议将事件发送到服务器。 但是,由于这是一个响应式应用程序,因此我们可以选择最适合流数据的协议。

在本部分的教程中,将创建一个服务,该服务使用RSocket协议生成价格数据。

本教程的这一部分包括以下步骤:

  • 创建一个RSocket控制器
  • 我们实现价格服务
  • 将通用代码移植到PriceService
  • 减少代码重复
  • 重构以减少样板
  • 信息显示设定
  • RSocket服务器配置

在本部分的最后,端口7000将启动定价服务,准备连接客户端以通过RSocket接收股票价格。

部分的完整源代码可在GitHub上获得。

第9部分。Java RSocket客户端


本课程中,我们将添加一个RSocket客户端,该客户端可以与在上一课程中创建RSocket服务器进行通信。

该博客条目包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

当前,我们有一个使用Spring的WebClient从头到尾运行的应用程序。 在上一课中,我们介绍了新的RSocket服务器,该服务器目前正在运行,并且在本课中,我们将了解如何创建客户端以与其连接。

本教程的这一部分包括以下步骤:

  • 创建一个集成测试
  • 创建RSocket库存客户端
  • 介绍StockClient界面
  • RSocket连接实现
  • 创建RSocketRequester
  • 整合通过测试
  • 使用StepVerifier测试
  • 添加回滚和错误处理策略

在本部分的最后,我们将提供一个生成股票价格的RSocket服务器,以及一个可以与其连接并查看这些价格的RSocket客户端。 在下一课中,我们将看到如何从使用WebClientStockClient迁移到新的RSocketStockClient。

部分的完整源代码可在GitHub上获得。

第10部分。切换客户端的Spring配置文件


教程最后部分使用Spring Profiles设置,以便应用程序可以确定我们要使用的两个客户端(服务器通过WebClient或RSocket发送的事件)中的哪个连接到我们的Kotlin Spring Boot定价服务。

与往常一样,此博客文章包含一个视频,显示了分步过程,并为那些喜欢书面格式的人提供了文本指南(摘录自视频抄本)。

在本教程系列的这一阶段,我们已经有了一个RSocket客户端,它允许我们连接到RSocket服务器,我们想使用JavaFX应用程序中的这些功能。

本教程的这一部分包括以下步骤:

  • 创建一个RSocketStockClient Bean
  • 选择要使用的豆
  • 活动配置文件选择
  • 记录调试
  • 通过RSocket获取价格

在本部分的最后,我们将提供一个完整的综合JavaFX折线图应用程序,该应用程序订阅了Kotlin Spring Boot应用程序的被动价格流。 此外,可以将应用程序配置为通过服务器发送的事件或通过新的RSocket协议接收这些价格。

完整代码可在GitHub上找到:

客户端项目 (stock-client和stock-ui-modules)。
服务器项目 (Kotlin Spring Boot应用程序)

补充阅读


完全反应:Spring,Kotlin和JavaFX一起玩[链接]
具有Spring Boot教程的Kotlin微服务
Java中的Spring Reactive编程

Source: https://habr.com/ru/post/zh-CN481950/


All Articles