为什么这里使用先实例化,然后再进行依赖注入?
pkg.sqlalchemy SQLAlchemy db = SQLAlchemy() # 然后再通过拓展模块注入 from internal.extension.database_extension import db from internal.extension.migrate_extension import migrate from pkg.sqlalchemy import SQLAlchemy class ExtensionModule(Module): """扩展模块的依赖注入""" def configure(self, binder: Binder) -> None: binder.bind(SQLAlchemy, to=db) binder.bind(Migrate, to=migrate) 为什么不直接使用 injector.get(SQLAlchemy) 进行依赖注入呢? 两种方式有什么使用场景的差异吗?
20
收起
正在回答
1回答
injector.get(SQLAlchemy)是根据指定的类名获取类的实例,对于SQLAlchemy来说,我们没有使用@inject进行装饰,所以这个实例并不会自己创建,就需要手动创建,并且告知injector,这个实例绑定到SQLAlchemy这个类上。
如果一个类有使用@inject进行装饰,这个类就不需要手动创建实例,因为injector可以知道怎么生成这个实例,并且将这个实例与类进行绑定。
AI Agent 全栈开发工程师
- 参与学习 522 人
- 解答问题 411 个
全流程打造你自己的(Coze/Dify)低代码智能体开发平台;2025年入行正当时,企业急需,人才稀缺,竞争小;无论入行还是转行,首选口碑好课,门槛低、成长高
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星