内置绑定(Built-in Bindings)


Built-in Bindings

除了显示绑定和just-in-time绑定外,还有一些额外的绑定会自动包含进Guice的注入器中。只有Guice的注入器自己可以创建这些绑定,如果尝试自行绑定会报错。

Loggers

Guice内置了java.uti.logging.Logger的绑定,这可以节省一些重复性的工作。这个绑定会自动将logger的名字设置为它被注入的类的名字。

@Singleton
public class ConsoleTransactionLog implements TransactionLog {

  private final Logger logger;

  @Inject
  public ConsoleTransactionLog(Logger logger) {
    this.logger = logger;
  }

  public void logConnectException(UnreachableException e) {
    /* the message is logged to the "ConsoleTransacitonLog" logger */
    logger.warning("Connect exception failed, " + e.getMessage());
  }

The Injector

在框架性的代码中,有时需要到运行时才能知道需要什么类型。在这种不常见的场景中,需要注入注入器本身。注入注入器本身的代码对于自己的依赖不是自说明的1,因此应该尽量少使用。

Providers

对于任何Guice知道的类型,都可以注入这个类型的Provider。注入Providers的细节请参考这里

TypeLiterals

Guice对于它注入的类型保存有完整的类型信息,如果你注入的是参数化类型,你可以采用TypeLiterial<T>来表明元素的具体类型。

Stage

Guice支持一个stagem枚举,可以用于区分开发环境和生产环境。

Members Injectors(?)

当绑定providers或编写它的扩展时,你可能希望Guice能够将依赖注入到你自己构造的对象中。为了达到这个目的,可以添加一个MembersInjector<T>的依赖(其中T是你自己构造对象的类型),然后调用membersInject.injectMembers(myNewObject)

1. Code that injects the injector does not self-document its dependencies.

results matching ""

    No results matching ""