前言
Spring 5 已经大力支持了响应式开发模式,引入的响应式框架叫做 Spring WebFlux。
关于 Spring 5 响应式开发的介绍,可以看之前的文章“Spring 5 响应式开发”。
本文不讲理论,直接创建一个响应式的 Restful API 示例,基于 Spring Boot 2.0、MongoDB,目的在于快速了解响应式代码是如何编写的。
如果想实际动手实践一下,文章末尾提供了源码下载地址。
示例代码
(1)创建项目
最简单的方式是到spring网站去初始化一个项目,网址 http://start.spring.io。
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
(4)创建 DAO
和以前使用JPA时一样,只是继承了reactive形式的父类。
里面什么都不用写,自动获得 CRUD 等基本能力。
(5)创建 Controller
下面的代码比较多,但实际就是 CRUD 的基本操作,重点看写法。
可以看到,与我们平时写的代码几乎一样,只是返回类型不一样了,比如 getAllBlogs() 获取全部blog列表,平时写法中返回值应该是 List<Blog>,而这里变成了 Flux<Blog>,Flux 相当于 N 个 Blog 的容器。
代码就都完成了,下面运行起来看看效果。
运行测试
启动项目
mvn spring-boot:run
使用 postman 访问 api
创建
查询所有
查询单条
修改
删除
查询所有,验证删除效果
小结
Spring 5 的 webflux 框架真的很牛,底层完全实现了响应式模型,使我们项目的性能得到较大提升,并且在开发方式上尽可能的与原有方式保持一致。
通过上面这个小DEMO,我们可以对响应式编码方式有一个大概的了解,可以看到,非常简单,但不要以为实际开发也很简单,Flux 有大量的方法需要我们去学习,而且 Spring 5 是基于 Java8 的,在开发中会大量用到 Lambda表达式、streams 操作,如果Java8还不熟,需要赶紧上车了。
原文作者:杜亦舒
公众号: 性能与架构
更多精彩内容请关注“IT实战联盟”哦~~~
注意:本文归作者所有,未经作者允许,不得转载