SuperAPI AI 工具集

litestar-dependency-injection

编程与开发

查看项目

更新于 10-15 16:48

技能介绍

用途:在 Litestar 应用中实施依赖注入,把设置对象、服务、仓储、会话、当前用户或请求派生值注入到处理器,并按复用边界选择作用域。

主要能力:以 Provide 包裹可调用对象实现提供者,支持 async、sync 与 generator 形式;用 Dependency(...) 标记处理校验、默认值与 OpenAPI 行为;支持 app、router、controller、handler 四层作用域,内层同键覆盖外层;生成器提供者负责关闭清理;支持请求级缓存与嵌套依赖图;测试中可用同键覆盖注入假实现。

使用方式:先确定要注入的契约,再选最窄的合适作用域,把提供者写成 Provide 包裹的可调用对象;保持依赖键与注入参数名完全一致;按生命周期选择 async、sync 或 generator 形式,阻塞型同步提供者设 sync_to_thread=True,廉价非阻塞的设 sync_to_thread=False;需要显式校验或 OpenAPI 默认值时使用 Annotated[..., Dependency(...)];在较低作用域和测试中按需覆盖。

适用场景:组织 settings→client/session→repository→service 的稳定分层;把传输层输入翻译为领域类型;在测试中替换依赖而不改处理器代码。

限制与注意:不要把所有依赖都注册在 app 作用域;避免用 dep1 之类不透明名称当作服务定位器;不要返回可变全局单例并按请求修改;同步提供者做阻塞 I/O 必须设 sync_to_thread=True;不要广泛使用 skip_validation=True 而不修类型边界;注入注解需在运行时可导入。缺失的版本、性能数据与价格等信息暂未提供。另可参考 Litestar 官方依赖注入文档:https://docs.litestar.dev/latest/usage/dependency-injection.html