2016-09-29 57 views
0

我想弄清楚如何创建一个配置类,类似于你会在春天Aurelia做什么。用例基本上具有消费模块,提供持久性等功能来管理自己的配置(创建连接,注册依赖关系等)。Aurelia DI配置类一拉春@配置

在弹簧,可以有这样的事情(伪代码中,未经过测试):

@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. 如何通过工厂方法/函数注册依赖关系,最好使用装饰器?

回答

0

该用例不受aurelia-dependency-injection模块的支持,但是现在有一个模块增加了对它的支持 - aurelia-factory-methods