主要观点:通过创建基本的 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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。