使用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时返回相同的实例,而不是再次实例化
答案 0 :(得分:1)
您需要将两个.get
调用都包装在一个类中,然后然后使用.get
或.resolve
文档摘录
对此方法之一的每次调用都将解决根依赖关系及其所有子依赖关系。在内部,InversifyJS创建了一个称为“解决方案”的依赖图。 inRequestScope范围将对解决方案中多次出现的对象使用一个实例。这样可以减少所需分辨率的数量,并且在某些情况下可以用作性能优化。
https://github.com/inversify/InversifyJS/blob/master/wiki/scope.md