关联绑定(Linked Bindings)


Linked Bindings

关联绑定(linked bindings)将一个类型与它的实现绑定。如下的例子中,TransactionLog与它的实现DatabaseTransactionLog绑定在一起:

public class BillingModule extends AbstractModule {
  @Override 
  protected void configure() {
    bind(TransactionLog.class).to(DatabaseTransactionLog.class);
  }
}

此时,当你调用injector.getInstance(TransactionLog.class)或注入器发现其他类依赖TransactionLog时,就会自动使用DatabaseTransactionLog实例。关联绑定可以绑定类型到它的任意子类型,包括实现类和扩展类。绑定具体类到它的扩展子类也是可以的,例如:

bind(DatabaseTransactionLog.class).to(MySqlDatabaseTransactionLog.class);

关联绑定也可以串联起来,例如:

public class BillingModule extends AbstractModule {
  @Override 
  protected void configure() {
    bind(TransactionLog.class).to(DatabaseTransactionLog.class);
    bind(DatabaseTransactionLog.class).to(MySqlDatabaseTransactionLog.class);
  }
}

在上面的例子中,当需要一个TransactionLog时,注入器会返回一个MysqlDatabaseTransactionLog实例。

results matching ""

    No results matching ""