是否有可能与生命周期事件挂钩,类似于Autofac的OnActivating或OnActivated

时间:2019-04-19 21:43:12

标签: java dagger-2 dagger

我有Dagger组件,它是使用几个模块创建的。应用程序需要某些模块,而其他一些模块是可选的。在第一个模块中,服务是绑定的:

@Singleton
@Binds
abstract IService serviceBind(Service service);

在第二个可选模块中,绑定了许多可选服务。我想使用第二个模块(可选模块)中的这些可选服务,对第一个模块中的服务执行一些操作。我不想将这些可选服务直接从第一个模块注入到服务中,因为我不希望类耦合,所以可能会有很多可选服务,我想使用反射来处理它们。另外,不可能所有可选模块都实现公共接口。

如果在Dagger中有可能附加到实例生存期事件,例如在Autofac(https://autofaccn.readthedocs.io/en/latest/lifetime/events.html)中,这将非常方便。例如,我将使用以下代码:

// PSEUDOCODE!
@OnActivated
void serviceOnActivated(IService service, IServiceOptonal1 s1, IServiceOptonal2 s2){
   service.register(s1);
   service.register(s2);
}

在Dagger中有什么办法做类似的事情吗?

0 个答案:

没有答案