【问题标题】:Dagger: injecting named Logger?Dagger:注入命名记录器?
【发布时间】:2015-08-05 21:39:13
【问题描述】:

我有某种分析包装器,我必须为每个类创建一个实例,如下所示:

Analytics.create(MyClass.class)

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

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

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

【问题讨论】:

    标签: logging dagger dagger-2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2022-01-16
      • 2018-07-04
      相关资源
      最近更新 更多