上个月,Trisha Gee(JetBrains)在SpringOne上演示了使用Spring Boot,Kotlin和JavaFX创建实时股票价格应用程序的演示。 录制了现场演示,并以
70分钟的视频形式提供 。
12月18日,Trisha根据该视频在
dzone.com上完成了 Spring Boot反应式教程在
dzone.com上的发布,该视频为一系列较短的视频,并附带一个博客文章,解释了每个步骤的过程更加缓慢和详细。
我有将本教程翻译成俄语的想法。 但是,Trisha对我对此的询问很礼貌地回应:
“让我向我的组织查询。 我很想翻译它,但我们可能有一种更好的翻译方式。”
因此,我决定只限于本教程的概述,其中包括以下系列课程:
- 构建Kotlin REST服务
- 用于反应流的REST客户端
- JavaFX Spring Boot应用程序
- JavaFX折线图
- 共享Bean的自动配置
- 显示反应数据
- 订阅多个订户
- Kotlin RSocket服务器
- Java RSocket客户端
- 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编程