Dagger:注入名为Logger的?

时间:2015-05-24 06:51:06

标签: logging dagger dagger-2

我有一些分析包装器,我必须在每个类中创建一个实例,如下所示:

Analytics.create(MyClass.class)

这样构建对象就可以使用类名来编写更好的事件。

但是为每个类创建这样的对象是非常烦人的(并且容易出错),所以我考虑使用Dagger(或Dagger2)。

有没有办法可以将当前类注入已经注入的对象?更好的是,注入命名记录器的好方法是什么?

1 个答案:

答案 0 :(得分:0)

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());
    }
}