我第一次尝试使用Google Guice并发现它非常好。 但是,当我到达Built-in Bindings的部分时,我不明白这些例子。
对我来说,看起来我可以像拦截器一样使用它来记录,但我不知道如何。
有人可以解释这种类型的绑定以及如何使用它吗?也许(如果可能的话)用它来记录?
答案 0 :(得分: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);
如果您需要覆盖记录器,则必须use this method。
答案 1 :(得分:1)
您指向的所有示例都显示您不必在代码(例如示例)中为Logger.class提供绑定。由于99%的情况是
Logger logger = Logger.getLogger(ConsoleTransactionLog.class);
为方便起见,Guice会为您提供该记录器。如果您需要不同的记录器(即,不是基于注入的类的记录器),您可以提供自己的绑定。