【发布时间】:2015-08-05 21:39:13
【问题描述】:
我有某种分析包装器,我必须为每个类创建一个实例,如下所示:
Analytics.create(MyClass.class)
这样构建的对象可以使用类名来编写更好的事件。
但是为每个类都创建这样的对象非常烦人(并且容易出错),所以我考虑使用 Dagger(或 Dagger2)。
有没有办法可以将当前类注入到已经注入的对象中?更好的是,注入命名记录器的好方法是什么?
【问题讨论】:
我有某种分析包装器,我必须为每个类创建一个实例,如下所示:
Analytics.create(MyClass.class)
这样构建的对象可以使用类名来编写更好的事件。
但是为每个类都创建这样的对象非常烦人(并且容易出错),所以我考虑使用 Dagger(或 Dagger2)。
有没有办法可以将当前类注入到已经注入的对象中?更好的是,注入命名记录器的好方法是什么?
【问题讨论】:
loginject 有一个dagger example 以这种方式注入记录器。你可以看看他们是如何实现它的,并为你的班级使用相同的方法。
import static org.loginject.LogInject.*;
import static org.loginject.LogParameter.*;
@Provides
Logger provideLogger() {
return loginject(Logger::getLogger,currentClassName()).as(Logger.class);
}
PS:我有时会使用这样的模式:
public interface WithLogger {
default Logger logger() {
return LoggerFactory.getLogger(getClass());
}
}
【讨论】: