3

帮助使用 inRequestScope inversifyJS 例如:

container.bind<ITransactionManager>(Types.MysqlTransactionManager).to(MysqlTransactionManager).inRequestScope()

...
container.get<ITransactionManager>(Types.MysqlTransactionManager)//call the MysqlTransactionManager constructor and return the instance

container.get<ITransactionManager>(Types.MysqlTransactionManager) //call the constructor one more time and return a new instance

我希望在第二次调用 get 时返回相同的实例,而不是再次实例化它

4

1 回答 1

1

您需要将两个.get调用包装在一个类中,然后.get使用或解析该类.resolve

文档摘录

对其中一种方法的每次调用都将解析根依赖项及其所有子依赖项。在内部,InversifyJS 创建了一个称为“解决方案”的依赖图。inRequestScope 范围将对在解析计划中多次出现的对象使用一个实例。这减少了所需分辨率的数量,并且在某些情况下可以用作性能优化。

https://github.com/inversify/InversifyJS/blob/master/wiki/scope.md

于 2019-09-04T11:03:11.127 回答