dagger error:java.lang.String的重复绑定

时间:2014-10-17 15:33:38

标签: dagger

我是匕首的新手,我正在使用Android的小应用程序进行研究。 我正在尝试使用Retrofit for REST请求通过http和https到两个服务器(dev和prod)。所以我在调试风格中有模块,其中:

@dagger.Module(overrides = true, library = true, complete = false)
public class DebugApiModule {
    private static final String SRV = "dev.mysrv.com";
    private static final String HTTP = "http://";
    private static final String HTTPS = "https://";

    public static final String API_URL = HTTP + SRV;
    public static final String API_URL_SECURE = HTTPS + SRV;

    @Provides @Singleton @Api String provideApi() { return API_URL; }
    @Provides @Singleton @ApiSecure String provideApiSecure() { return API_URL_SECURE; }
}

这里我使用注释来区分两个字符串,但是我收到错误:

Error:(23, 50) error: Duplicate bindings for java.lang.String in override module(s) - cannot override an override:
com.myapp.common.api.DebugApiModule.provideApi()
com.myapp.common.api.DebugApiModule.provideApiSecure()

这段代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

@Api@ApiSecure注释都需要使用javax.inject.Qualifier进行注释,以便Dagger将其用作区分因素。

@Qualifier
@Retention(RUNTIME)
public @interface Api {
}