1

我第一次尝试了 Google Guice,发现它非常好。但是,当我到达内置绑定部分时,我不理解这些示例。

对我来说,看起来我可以像拦截器一样使用它来记录日志,但我不知道如何。

你们中有人可以解释这种类型的绑定以及我如何使用它吗?也许(如果可能的话)用它来记录?

4

2 回答 2

2

文档表明bind(Logger.class).to(...)已经为您拨打了电话。因此,您不需要调用 bind 方法。相反,您可以直接注入它,就好像您已经调用了 bind:

class DoSomething {
    private final Logger logger;
    @Inject public DoSomething(Logger logger) {
        this.logger = logger;
    }
}

或者,您可以从注入器中获取它:

/* even without specifying modules, logger is present */
Injector injector = Guice.createInjector();
Logger logger = injector.getInstance(Logger.class);

如果您需要覆盖记录器,则必须使用此方法

于 2010-01-14T23:35:17.060 回答
1

您指向的所有示例都表明您不必在示例代码中为 Logger.class 提供绑定。由于 99% 的情况是

Logger logger = Logger.getLogger(ConsoleTransactionLog.class);

为了方便起见,Guice 将为您提供该记录器。如果您需要不同的记录器(即,一个不基于被注入的类),您可以提供自己的绑定。

于 2009-12-21T00:22:30.757 回答