org.springframework.web.servlet.function.RouterFunctions 简介

81 阅读1分钟

org.springframework.web.servlet.function.RouterFunctions 是 Spring Web MVC 提供的函数式路由核心类,用于替代传统注解式(如 @RestController)的路由定义方式。以下是关键特性与用法:


核心功能

  1. 路由构建

    • 通过 route() 方法链式组合 RequestPredicate(请求条件)和 HandlerFunction(处理逻辑)。
    • 支持嵌套路由(nest())和模块化组织代码。
  2. 请求处理

    • HandlerFunction 接收 ServerRequest 并返回 ServerResponse,实现纯函数式处理。
  3. 适配与转换

    • 可将 RouterFunction 转换为 HttpHandler 或 WebHandler,兼容不同运行时环境16。

典型用法示例

定义路由规则并处理 GET 请求:

RouterFunction<ServerResponse> route = RouterFunctions.route()
    .GET("/hello", request -> ServerResponse.ok().body("Hello World"))
    .build();

支持组合谓词(如路径、HTTP 方法、Content-Type)。


与注解式对比

特性注解式(@RestController)函数式(RouterFunction)
编程模型声明式,基于注解函数式,显式组合逻辑28
灵活性有限支持动态路由和复杂谓词组合68
适用场景传统 MVC响应式或需要细粒度控制的场景48

底层机制

请求由 DispatcherServlet 处理,通过 RouterFunctionMapping 匹配路由并调用对应的 HandlerFunction