Aurelia DI配置类a Spring @configuration

时间:2016-09-29 18:00:49

标签: typescript dependency-injection aurelia

我试图弄清楚如何创建一个类似于你在Aurelia中使用spring的配置类。用例基本上是消耗模块,它们提供持久性等功能来管理自己的配置(创建连接,注册依赖项等等)。

春天,你可以有这样的东西(伪代码,还没有经过测试):

@Configuration
class Config {
    @Bean
    public Connection createConnection(string cnt) {
      // TODO: create connection
    }
}

上面的代码将执行createConnection方法并注册与容器的连接,并在调用方法时传递cnt连接字符串变量。

我相信我可以做以下事情:

export class Dependencies {
    public configure(container: Container): void {
        let cnt: string = container.get('cnt');
        container.registerSingleton(Connection, () => {
           // TODO: create connection
        })
    }
}

然后在其他地方调用它:

class App {
   constructor(dependencies: Dependencies) {
       dependencies.configure(this.container, this.cnt);
   }
}

这种方法的问题在于配置变得明确,您必须知道配置类的名称,调用的方法以及何时调用它,因为您希望在之前注册连接字符串创建连接。

恕我直言,有一个明确的配置步骤会使事情紧密耦合。此外,通过工厂方法提供依赖性的方式也使配置更容易并且更符合人体工程学。

总之,我的两个问题是:

  1. 是否可以有明确的配置@configuration步骤,例如@singleton@transient
  2. 如何通过工厂方法/函数注册依赖项,最好使用装饰器?

1 个答案:

答案 0 :(得分:0)

This use case isn't supported by the aurelia-dependency-injection module, however there is now a module that adds support for it - aurelia-factory-methods.