Reactive编程学习记录(长期)-知识及编程技巧
问题记录 最后的结果Flux、Mono一定要作为方法返回值,因为响应式编程的异常信息保存在这些结果中(而不是在方法调用时抛出),所以这些结果必须作为方法返回值,否则Spring无法知道方法是否报错 常用api记录 如果要操作数据,并返回一个Mono的时候,使用flatMap 一般如果不操作数据,仅数据转换,使用map 订阅者是由Spring框架去完成,我们(开发)写发布者代码 zipWith方法可以组合两个Mono/Flux,并返回新的Mono/Flux类型 take(x)适合取flux中前x个,而当flux就一个元素的适合,可以使用next()将flux转为mono flatMapMany适合将Mono<数组/集合>转换为Flux 当希望合并多个流操作的时候,可以使用Mono.zip/Flux.zip Mono.zip(memberLevelMono, giftCardMono, couponMono).map... zipWith方法会同时请求待合并的两个Mono数据,而zipWhen方法则会阻塞...
Spring WebFlux vs WebMVC:响应式编程完全对比指南
概述Spring WebFlux 是 Spring 5 引入的响应式编程框架,与传统的 WebMVC 形成鲜明对比。本文通过组件架构、执行流程、代码示例等多维度对比两者的核心差异。 核心对比: 🏗️ 架构组件差异 ⚡ 执行模型对比 💻 编程范式转变 🚀 性能特性分析 适用场景: WebMVC:传统同步阻塞应用 WebFlux:高并发、IO密集型应用 WebMVC vs WebFlux 架构对比组件架构 核心组件对比: 组件层 WebMVC WebFlux 说明 Web层 Spring MVC Spring WebFlux Web框架 服务器 Servlet容器(Tomcat等) Netty/Undertow 底层服务器 API Servlet API Reactive Streams 编程接口 线程模型 一请求一线程 事件循环 并发模型 执行流程WebMVC 执行过程 特点: 12请求 → DispatcherServlet → Handler Mapping → Controller ← 同步阻塞等待 ← 执行特...
记录Reactive编程模式下如何方便的debug
通过打开全局 Operator 堆栈追踪 未开启之前 开启之后 这种方法同等与在方法内部输出以下代码1234//打开Hooks.onOperatorDebug();//关闭Hooks.resetOnOperatorDebug();
记录RouterFunction方式如何实现全局异常拦截
在使用mvc编程方式下,全局异常拦截可使用如下方式123456789101112131415/** * @author 小五 */@Slf4j@RestControllerAdvice@RequiredArgsConstructorpublic class DefaultExceptionHandlerConfig { @ExceptionHandler(BeHappyException.class) //@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ResponseEntity beHappyExceptionHandler(BeHappyException e){ log.error("BeHappy Exception: {}",e.getMsg()); return ResponseEntity.internalServerError().body(e); }} 在使用路由...
