快速开始
这一示例注册一个 singleton Provider、一个 Controller 和一条带路径参数的 GET 路由。它只使用默认 feature。
1. 创建依赖
Cargo.toml
2. 声明 Provider 与 Controller
src/main.rs
#[injectable] 为普通 Rust 类型生成 FromModuleRef 实现。GreetingController 的 Arc<GreetingService> 字段成为显式依赖,模块同时把 Controller 注册为 Provider 和 HTTP Controller。
3. 运行与请求
另一个终端中请求:
响应正文是:
构建时发生了什么
BootFactory::create收集AppModule的声明。- 容器检查 Provider token、依赖与模块可见性。
- Controller 宏生成
ControllerDefinition与RouteDefinition。 - Axum 适配器把框架路由转换为实际 router。
- 请求进入 Boot 管线,路径参数被提取为
String,然后调用 handler。
任何依赖缺失、重复路由或非法模块图都会在监听前返回 BootError。
显式 API 仍然可用
属性宏并不是另一套运行时。动态注册或不使用宏的应用可以直接实现 Module,返回 ProviderDefinition 和 ControllerDefinition。两种写法最终进入同一个应用图与执行管线。
下一步
- 在应用模型中拆分模块、导出 Provider 并选择 scope。
- 在Controller 与路由中学习请求提取、版本与响应类型。
- 在请求管线中加入认证、转换和统一错误处理。