Spring Webflux - 03 Webflux编程模型

简介: Spring Webflux - 03 Webflux编程模型

@[toc]

在这里插入图片描述


webflux

https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux

WebFlux有两种编程模型

  • 传统的 Annotated Controllers
  • 轻量的 Functional Endpoints

Annotated Controllers 注释控制器 使用方式传统的MVC方式,允许返回Flux,Mono类型
Functional Endpoints 启动非常快,占用内存少。适用小型项目,不然路由表非常复杂

Spring MVC 和 Spring WebFlux 均能使用注解驱动 Controller,然而不同点在于并发模型和阻塞特性。

Spring MVC 通常是基于Servlet 和Tomcat,因此是阻塞的,而Spring WebFlux 通常是非阻塞服务,基于 Reactor 和 Netty,不会发生阻塞。

在这里插入图片描述


Annotated Controllers - 基于Spring MVC 注解定义请求的Webflux开发

https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-controller

在这里插入图片描述

@RestController
public class TestController {

    @GetMapping("index")
    public Mono<String>  index(){
        return Mono,just("ARTISAN CODE");
    }
}

Functional Endpoints_基于函数式的Webflux开发

在基于函数式的编程模型中,有两个核心的接口,分别是 RouterFunction 和 HandlerFunction,

  • RouterFunction 实现了路由功能,将请求转发给对应的 handler
  • HandlerFunction 代表了处理传入请求并生成响应的函数

在这里插入图片描述

HandlerFunction

相当于Controller的具体处理方法,输入为请求,输出封装在Mono中的响应

@FunctionalInterface
public interface HandlerFunction<T extends ServerResponse>{
    Mono<T> handle(ServerRequest request)
}

RouterFunction

相当于RequestMapping, 将Url射到具体的HandlerFunction,输入为请求,输出为封装在 Mono的HandlerFunction

@FunctionalInterface
public interface RouterFunction<T extends ServerResponse>{
    MonoHandlerFunction<T>  route(ServerRequest request);
}

在这里插入图片描述

相关文章
|
5月前
|
存储 Java Maven
Spring Boot WebFlux 增删改查完整实战 demo
Spring Boot WebFlux 增删改查完整实战 demo
|
5月前
|
前端开发 Java 数据库
浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOP、AOP通知执行顺序~
浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOP、AOP通知执行顺序~
|
5月前
|
XML Java 数据格式
技术好文:Spring基础篇——AOP切面编程
技术好文:Spring基础篇——AOP切面编程
|
1月前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
26 1
|
1月前
|
XML Java 数据库连接
【2020Spring编程实战笔记】Spring开发分享~(上)
【2020Spring编程实战笔记】Spring开发分享~
53 0
|
3月前
|
XML Java 数据格式
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
这篇文章是Spring5框架的AOP切面编程教程,通过XML配置方式,详细讲解了如何创建被增强类和增强类,如何在Spring配置文件中定义切入点和切面,以及如何将增强逻辑应用到具体方法上。文章通过具体的代码示例和测试结果,展示了使用XML配置实现AOP的过程,并强调了虽然注解开发更为便捷,但掌握XML配置也是非常重要的。
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
|
3月前
|
Java Spring XML
掌握面向切面编程的秘密武器:Spring AOP 让你的代码优雅转身,横切关注点再也不是难题!
【8月更文挑战第31天】面向切面编程(AOP)通过切面封装横切关注点,如日志记录、事务管理等,使业务逻辑更清晰。Spring AOP提供强大工具,无需在业务代码中硬编码这些功能。本文将深入探讨Spring AOP的概念、工作原理及实际应用,展示如何通过基于注解的配置创建切面,优化代码结构并提高可维护性。通过示例说明如何定义切面类、通知方法及其应用时机,实现方法调用前后的日志记录,展示AOP在分离关注点和添加新功能方面的优势。
56 0
|
3月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
52 0
|
3月前
|
Java Spring 供应链
Spring 框架事件发布与监听机制,如魔法风暴席卷软件世界,开启奇幻编程之旅!
【8月更文挑战第31天】《Spring框架中的事件发布与监听机制》介绍了Spring中如何利用事件发布与监听机制实现组件间的高效协作。这一机制像城市中的广播系统,事件发布者发送消息,监听器接收并响应。通过简单的示例代码,文章详细讲解了如何定义事件类、创建事件发布者与监听器,并确保组件间松散耦合,提升系统的可维护性和扩展性。掌握这一机制,如同拥有一把开启高效软件开发大门的钥匙。
49 0
|
4月前
|
Java Spring 容器
Spring问题之Spring AOP是如何实现面向切面编程的
Spring问题之Spring AOP是如何实现面向切面编程的
下一篇
无影云桌面