#java #dagger-2 #dagger
#java #кинжал-2 #кинжал
Вопрос:
У меня есть компонент 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?