我第一次尝试了 Google Guice,发现它非常好。但是,当我到达内置绑定部分时,我不理解这些示例。
对我来说,看起来我可以像拦截器一样使用它来记录日志,但我不知道如何。
你们中有人可以解释这种类型的绑定以及我如何使用它吗?也许(如果可能的话)用它来记录?
我第一次尝试了 Google Guice,发现它非常好。但是,当我到达内置绑定部分时,我不理解这些示例。
对我来说,看起来我可以像拦截器一样使用它来记录日志,但我不知道如何。
你们中有人可以解释这种类型的绑定以及我如何使用它吗?也许(如果可能的话)用它来记录?
文档表明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);
如果您需要覆盖记录器,则必须使用此方法。
您指向的所有示例都表明您不必在示例代码中为 Logger.class 提供绑定。由于 99% 的情况是
Logger logger = Logger.getLogger(ConsoleTransactionLog.class);
为了方便起见,Guice 将为您提供该记录器。如果您需要不同的记录器(即,一个不基于被注入的类),您可以提供自己的绑定。