Dagger 2从多个组件中注入依赖关系

时间:2017-10-15 16:02:09

标签: java android dependency-injection dagger-2

我有一个问题。

为了分离我的组件并仅负责应用程序的特定部分,我使用不同的组件。

例如,在我的情况下,我有应用程序组件和 UserSessionComponent 。我需要在主Application类中注入依赖项。

这是代码

@PerApplication 
@Component(modules = {ApplicationModule.class,UtilsModule.class, DbModule.class})
public interface ApplicationComponent {
    // Injection methods
    void inject(MainApplication mainApplication);
}

用户会话组件

@PerUserSessionScope
@Component(dependencies = {ApplicationComponent.class}, modules = {UserSessionCommonModule.class, UserSessionModule.class})
public interface UserSessionComponent {
    void inject(MainApplication mainApplication);
}

MainApplication 类中,我有以下依赖项。

@Inject
protected UserSessionManager mUserSessionManager;

在编译 ApplicationComponent 无法提供所需的依赖关系时抛出错误,这是显而易见的。

注射按以下方式进行

@Override
public void onCreate() {
    super.onCreate();
    mApplicationComponent = DaggerApplicationComponent
            .builder()
            .applicationModule(new ApplicationModule(this))
            .build();
    mApplicationComponent.inject(this);
    initUserSession();
}

所以问题是如何在同一类中注入多个组件时调用inject方法。

0 个答案:

没有答案