基础
vert.x Web
依赖
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web</artifactId>
<version>3.4.2</version>
</dependency>
概述
🍇 Vert.x
本质:
基于 Netty 的异步非阻塞框架,属于「反应式编程」(Reactive Programming)范畴,不仅限于 Web 开发,还支持网络编程、事件驱动等多种场景。
核心特性:
异步非阻塞 I/O,通过事件循环(Event Loop)模型处理高并发请求,资源消耗低,适合高吞吐量场景。
多语言支持(Java、Kotlin、JavaScript 等),但在 Java 生态中应用广泛。
轻量级,模块化设计,可按需引入组件(如 Web 路由、数据库客户端等)。
无侵入式,不强制依赖特定注解或配置,代码更灵活。
适用场景:
高并发 API 服务、实时通信(如 WebSocket)、微服务架构中的轻量级服务等。
🍇 Router Route RoutingContext
Router 是 Vert.x Web 的核心概念之一。它是一个维护了零或多个 Route 的对象。
Router 接收 HTTP 请求,并查找首个匹配该请求的 Route,然后将请求传递给这个 Route。
Route 可以持有一个与之关联的处理器用于接收请求,通过这个处理器对请求做一些事情,然后结束响应或者把请求传递给下一个匹配的处理器。
RoutingContext表示路由上下文,包含了 HTTP 请求和响应的所有信息。
🍇 注意
Vert.x 的 Web 框架通过显式的路由配置来关联请求路径和处理器(Handler<RoutingContext>)。
显示配置方式:
代码注册(如router.get("/path").handler(handler))
配置文件(如handler-mappings)
vertx:
handler-mappings:
- path: /api
method: GET
beanNames: netidHandler
- path: /api
method: POST
beanNames: netidHandler
RoutingContext
RoutingContext ctx;
ctx.next();
// 是上下文对象中用于控制中间件流程的函数,调用它会将控制权交给下一个中间件或路由处理器。如果不调用next(),流程会在当前中间件中断,后续逻辑不会执行。
核心类
Promise 和 Future
🍇 Promise 异步操作对象
Promise webResult= Promise.promise();
// 创建一个新的 Promise 对象;
// Promise 代表一个尚未完成但预计将来会完成的异步操作;
// 是异步操作的 "承诺者",用于管理异步操作的结果(成功 / 失败),并将结果传递给对应的Future
webResult.complete((Object)xxx);
// 将异步操作的结果respBody传递给 Promise,并标记这个 Promise 为已完成状态
🍇 Future
Future<JsonObject> codeResultFuture = webResult.future();
// 获取与该Promise绑定的Future对象
codeResultFuture.onSuccess();
// Future 注册 "成功回调" 的方法。
// 当异步操作成功完成并返回结果时,onSuccess 注册的回调函数会被触发,通常可以在回调中处理返回的 JsonObject 数据。
codeResultFuture.onFailure();
// Future 注册 "失败回调" 的方法。
// 当异步操作失败(如网络错误、异常抛出等)时,onFailure 注册的回调函数会被触发,通常可以在回调中处理错误信息。
Pair和Triple
org.apache.commons.lang3 提供了返回多个值的工具类,返回2个值用Pair,3个值用Triple;
cn.hutool.core.lang包中也提供了关于Pair的工具包;
🍇 Pair
org.apache.commons.math3.util.Pair,是Pair<K, V>键值对的形式,提供的方法主要是getKey(),getValue()
创建Pair对象:
Pair<Boolean,String> pair = new Pair<>(true,"test");
org.apache.commons.lang3.tuple.Pair,是抽象类,提供Pair<L, R>左边与右边的形式的工具类,获取值的方法有getKey(), getValue(),getLeft(),getRight(); // 使用的是这个类
创建Pair对象:
Pair<Boolean,String> pair = new ImmutablePair<>(true,"test");
Pair.of(true, "test");
cn.hutool.core.lang.Pair,是Pair<K, V>键值对的形式,提供的方法主要是getKey(),getValue()
创建Pair对象
Pair<Boolean,String> pair = new Pair<>(true,"test");
🍇 Triple
org.apache.commons.lang3.tuple.Triple,是一个抽象类,以Triple<L, M, R>的形式返回三个参数;
创建Triple对象
Triple triple = new ImmutableTriple("test", 11,"sex");
1367

被折叠的 条评论
为什么被折叠?



