使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

安全建
• 阅读 23506

概述

什么是 Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发框架. 要深入了解 Spring WebFlux, 首先要了知道 Reactive Stream, 和命令式编程相较而言, 只是另一种编程姿势.

滚床单的姿势有很多种, 目的都一样.

WebFlux 支持两种编程风(姿)格(势)

  • 使用@Controller这种基于注解的姿势, 与Sring MVC的姿势相同
  • 基于Java 8 Lambda的函数式编程风格
注意: 上面只是两种编程的姿势, 和"普通话和重庆话都是中国话"是一个道理. 我们公司也有外地的, 对他我说普通话, 对本地同事说重庆话. 这叫多态

创建项目

本文的源码在最下面

通过 http://start.spring.io 创建项目骨架.

使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

如果是手工配置, 需要添加Spring的里程碑(Milestone)仓库:

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

测试

列举所有用户

使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

创建用户

使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

获取单个用户

使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

修改

使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

删除

使用 Spring Boot 2.0 + WebFlux 实现 RESTful API

源码

注解姿势
函数姿势

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Easter79 Easter79
3年前
tornado配合celery及rabbitmq实现web request异步非阻塞
Tornado和Celery介绍1.TornadoTornado是一个用python编写的一个强大的、可扩展的异步HTTP服务器,同时也是一个web开发框架。tornado是一个非阻塞式web服务器,其速度相当快。得利于其非阻塞的方式和对epoll的运用,tornado每秒可以处理数以千计的
Stella981 Stella981
3年前
Spring5的WebClient使用详解
前言Spring5带来了新的响应式web开发框架WebFlux,同时,也引入了新的HttpClient框架WebClient。WebClient是Spring5中引入的执行HTTP请求的非阻塞、反应式客户端。它对同步和异步以及流方案都有很好的支持,WebClient发布后,RestTemplate将在将来版本中弃用,并且不会向前添加主要新功能。
Stella981 Stella981
3年前
Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门
Spring5.0中发布了重量级组件Webflux,拉起了响应式编程的规模使用序幕。WebFlux使用的场景是异步非阻塞的,使用Webflux作为系统解决方案,在大多数场景下可以提高系统吞吐量。SpringBoot2.0是基于Spring5构建而成,因此SpringBoot2.X将自动继承了Webflux组件,本篇给大家
Stella981 Stella981
3年前
Spring Boot WebFlux 快速入门实践
02:WebFlux快速入门实践SpringBoot2.0spring.io官网有句醒目的话是:BUILDANYTHINGWITHSPRINGBOOTSpringBoot(Boot顾名思义,是引导的意思)框架是用于简化Spring应
Stella981 Stella981
3年前
Netty入门
一、是什么  Netty是一个高性能、异步事件驱动、基于JavaNIO的异步的可扩展的客户端/服务器网络编程框架。  Netty提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过FutureListener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果
Wesley13 Wesley13
3年前
0、Spring 注解驱动开发
0、Spring注解驱动开发0.1简介《Spring注解驱动开发》是一套帮助我们深入了解Spring原理机制的教程;现今SpringBoot、SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解、原理,比如@Conditional、@Import、@
Stella981 Stella981
3年前
Spring WebFlux的设计及工作原理剖析
前言Spring5发布有两年了,随Spring5一起发布了一个和SpringWebMvc同级的SpringWebFlux。这是一个支持反应式编程模型的新框架体系。反应式模型区别于传统的MVC最大的不同是异步的、事件驱动的、非阻塞的,这使得应用程序的并发性能会大大提高,单位时间能够处理更多的请求。这里不讲WebFlux是怎么用的,有什么用,这