Spring 5 的 WebFlux 响应式开发示例

编程学思 2018-07-19 15:05:55 ⋅ 810 阅读

前言

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 中添加数据库连接信息:

 
  1. 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 的容器。

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

运行测试

启动项目

 
  1. mvn spring-boot:run

使用 postman 访问 api

创建

查询所有

查询单条

修改

删除

查询所有,验证删除效果

小结

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

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

文章来源

原文作者:杜亦舒

公众号:  性能与架构


更多精彩内容请关注“IT实战联盟”哦~~~



全部评论: 0

    我有话说:

    推荐一款功能强大,开源免费H5可视化编辑器

    H5-Dooring 是一款功能强大,开源免费H5可视化页面配置解决方案,致力于提供一套简单方便、专业可靠、无限可能H5落地页最佳实践。技术栈以react为主, 后台采用nodejs开发. 预览

    Fizz Gateway 1.1.1 发布,基于 Java异步框架WebFlux开发微服务网关

    Fizz Gateway 是一个基于 Java异步框架WebFlux开发微服务网关,能够实现热服务编排、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理等目的,拥有强大自定义

    Spring Boot 开发利器

    工欲善其事,必先利其器每次创建新项目都要找各种依赖包是不是很烦?今天给大家介绍下 Spring 官方提供 Online 项目脚手架

    Spring Boot 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5 发布

    Spring Boot 多个分支发布了新版本,分别是 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5Spring Boot 2.4.0-RC1 此版本是 

    Spring Cloud快速搭建开放平台解决方案

    基于Spring Cloud开放平台解决方案 SOP

    Spring Cloud Alibaba 发布毕业后首个版本

    方剑,花名洛夜,GitHub ID @fangjian0423,开源爱好者,阿里巴巴高级开发工程师,阿里云产品 EDAS 开发Spring Cloud Alibaba 开源项目负责人。

    码云推荐:一个优秀分布式spring boot/Spring Cloud API限流框架,特别适合微服务架构

    一个优秀分布式spring boot/Spring Cloud API限流框架,特别适合微服务架构.

    开源资讯】Spring Data 2020.0 RC2 发布

    Spring Data 2020.0 RC2 发布了。Spring Data 项目目的是简化构建基于 Spring 框架应用数据访问计数,包括非关系数据库、Map-Reduce 框架

    WebMIS 1.0.0 beta.3 发布,全栈开发基础框架

    ,为企业提供一套完整技术解决方案,满足快速开发...

    【SpringCloud实战】一次开发中使用Feign添加动态Header问题思考

    踩了一个Spring Cloud Feign添加自定义Header坑,分享给大家

    架构实战篇(六):Spring Boot RestTemplate使用

    RestTemplate是Spring提供用于访问Rest服务客户端,RestTemplate提供了多种便捷访问远程Http服务方法,能够大大提高客户端编写效率。

    架构实战篇(一)-Spring Boot+MyBatis基础架构搭建

    Spring追求一定是简单点简单点,让java开发变得更加简单、容易。瞧瞧告诉你们直接copy就能用哦~~~

    【总结】前端5大常见设计模式,代码一看你就懂!

    用代码示例来掌握前端5大设计模式

    构建数据集成和实时数据处理流水线工具Spring Cloud Data Flow

    Spring Cloud Data Flow 是基于原生云对 Spring XD 重新设计

    Spring Initializr 0.1.0 发布,Spring 项目快速开始生成器

    Spring Initializr 0.1.0 已经发布。 Spring initializr 是一个 Spring 项目快速开始生成器。其提供了一个可扩展 API 来生成基于 JVM

    Spring Framework 5.3.4 和 5.2.13 发布

    Spring Framework 5.3.4 和 5.2.13 已发布,5.3.4 版本包括 62 项修复和改进,5.2.13 包含 18 项修复和改进。具体如下。 v5.3.4 部分新特性 在

    微型Java开发框架Solon 1.1发布,QPS达10万+

    简介 Solon 是一个微型Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,2700多次commit;内核保持0.1m身材,超高Web跑分,良好使用体验

    架构实战篇(十五):Spring Boot 解耦之事件驱动

    通过使用spring 事件来解决业务代码耦合