【问题标题】:nestjs replace service at runtime for a plugin systemnestjs 在运行时替换插件系统的服务
【发布时间】:2020-06-28 07:31:12
【问题描述】:

nestjs 应用的插件系统。

我有某种基于“核心”模块的服务。 这个模块应该是一个黑盒子,完全密封。 添加新功能的唯一方法是在系统上注入新模块,最终, 替换核心模块的部分服务。

问题: 我如何在运行时替换服务? (@Injectable)

这个想法是用具有增强功能的新类替换旧类。

【问题讨论】:

  • 为什么要在运行时更改服务?
  • 用于实现插件,将自定义逻辑添加到黑盒中,以功能样式。

标签: nestjs


【解决方案1】:
@Module({
providers: [{provide: OldServiceClass, useClass: NewServiceClass}]
})
export class FeatureModule {}

【讨论】:

  • 我实际上正在做类似的事情,使用动态模块来允许传入一个类,然后使用工厂和自定义提供程序来确定要使用的类的哪个变体,默认一个,或者用户提供的自定义一个。
  • 是的,我已经尝试过了,但是,它不起作用,我的意思是,旧模块(核心隐藏模块)仍然使用旧类。
  • 如果您在全局模块中以这种方式声明提供程序,这将解决问题
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 2013-06-20
  • 2023-02-05
  • 2017-02-09
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2017-11-28
相关资源
最近更新 更多