主要观点:通过创建基本的 CRUD 应用继续探索 Spring Webflux 的能力,本部分不使用数据库,第二部分添加,实现了多个 CRUD 操作及对Flux
的单元测试,代码可在GitHub获取。
关键信息:
- 用 Spring Initializr 创建项目,选择 Java 9、Spring Boot 2.0.0、Reactive Web 依赖。
- 创建
Show
和ShowEvent
域对象,分别包含id
和title
、id
和date
。 - 实现
ReactiveShowRepository
接口,使用ReactiveCrudRepository
,添加spring-data-commons
依赖。 - 创建
ShowHandler
作为服务等价物,注入ShowRepository
并返回Flux
转换后的Mono
。 - 创建
Router
将 URL 与Handler
链接,在WebConfig
类中定义RouterFunctions
。 - 在
ReactiveShowRepository
中实现findAll
方法,用ConcurrentHashMap
存储数据。 - 实现
findById
方法,在ShowHandler
中添加byId
方法并添加路由。 - 创建
ShowEventHandler
,使用Flux.generate
和delayElements
每秒发送ShowEvent
,添加路由。 - 用
WebTestClient
测试ShowEvents
,先出现连接关闭异常,添加默认构造函数后测试成功。
重要细节: - 各种方法的具体实现细节,如
ReactiveShowRepository
中接口方法的空实现及具体存储数据方式等。 RouterFunctions
的添加路由方式及顺序。WebTestClient
测试的具体步骤和遇到的问题及解决方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。