前言

Spring 5 已经大力支持了响应式开发模式,引入的响应式框架叫做 Spring WebFlux

关于 Spring 5 响应式开发的介绍,可以看之前的文章“Spring 5 响应式开发”。

本文不讲理论,直接创建一个响应式的 Restful API示例,基于 Spring Boot 2.0、MongoDB,目的在于快速了解响应式代码是如何编写的。

如果想实际动手实践一下,文章末尾提供了源码下载地址。

示例代码

(1)创建项目

最简单的方式是到spring网站去初始化一个项目,网址 http://start.spring.io

Spring 5 响应式开发示例_java

Group : com.example

Article : webflux-demo

Dependencies : Reactive Web 和 Reactive MongoDB

填好后点击生成项目的按钮就可以下载下来了。

(2)连接数据库

MongoDB 的安装步骤就不细说了,我使用的是 Docker 容器,很方便。

application.properties 中添加数据库连接信息:

spring.data.mongodb.uri=mongodb://localhost:27017/webflux_demo

(3)创建 Model

Spring 5 响应式开发示例_java_02

(4)创建 DAO

Spring 5 响应式开发示例_java_03

和以前使用JPA时一样,只是继承了reactive形式的父类。

里面什么都不用写,自动获得 CRUD 等基本能力。

(5)创建 Controller

下面的代码比较多,但实际就是 CRUD 的基本操作,重点看写法。

Spring 5 响应式开发示例_java_04

可以看到,与我们平时写的代码几乎一样,只是返回类型不一样了,比如 getAllBlogs() 获取全部blog列表,平时写法中返回值应该是 List<Blog>,而这里变成了 Flux<Blog>,Flux 相当于 N 个 Blog 的容器。

代码就都完成了,下面运行起来看看效果。

运行测试

启动项目

mvn spring-boot:run

使用 postman 访问 api

创建

Spring 5 响应式开发示例_java_05

查询所有

查询单条

修改

删除

Spring 5 响应式开发示例_java_06

查询所有,验证删除效果

Spring 5 响应式开发示例_java_07

小结

Spring 5 的 webflux 框架真的很牛,底层完全实现了响应式模型,使我们项目的性能得到较大提升,并且在开发方式上尽可能的与原有方式保持一致。

通过上面这个小DEMO,我们可以对响应式编码方式有一个大概的了解,可以看到,非常简单,但不要以为实际开发也很简单,Flux 有大量的方法需要我们去学习,而且 Spring 5 是基于 Java8 的,在开发中会大量用到 Lambda表达式、streams 操作,如果Java8还不熟,需要赶紧上车了。

需要上面源码的朋友可以在公众号内发送消息webfluxdemo 获取下载地址(稍长点,可以长按复制)