inRequestScope无法按预期工作

时间:2018-09-05 17:58:14

标签: javascript typescript express inversifyjs

使用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时返回相同的实例,而不是再次实例化

1 个答案:

答案 0 :(得分:1)

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

来解析该类

文档摘录

  

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

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