构造器注入

除了标准的属性注入方法之外,midway 在一定程度上支持了构造器注入的方式,来让一些应用或者三方包平稳过度。

同样还是使用 @inject 装饰器。

  1. @provide()
  2. export class A {
  3. config = {
  4. c: 20
  5. };
  6. }
  7. @provide()
  8. export class B {
  9. config = {
  10. c: 40
  11. };
  12. }
  13. @provide()
  14. export class BaseService {
  15. config;
  16. plugin2;
  17. constructor(
  18. @inject() a,
  19. @config('hello') config,
  20. @inject() b,
  21. @plugin('plugin2') plugin2
  22. ) {
  23. this.config = Object.assign(config, {
  24. c: a.config.c + b.config.c + config.c
  25. });
  26. this.plugin2 = plugin2;
  27. }
  28. }

在一个类的构造器中,我们可以还可以使用其他的类似 @config, @plugin, @logger 等装饰器。只要是通过 IoC 管理的对象,都能够被自动依赖和注入。