Provide different implementations of an interface

Use @Qualifier

@Qualifier
@Documented
@Retention(RUNTIME)
public @interface Named {
    /** The name. */
    String value() default "";
}
@Inject
@Named("Database")
Storage storageDB;

@Inject
@Named("Cache")
Storage storageCache;
@Module
public class AppModule {

    @Provides
    @Singleton
    @Named("Database")
    public Storage provideDatabaseStorage() {
        return new Database();
    }

    @Provides
    @Singleton
    @Named("Cache")
    public Storage provideCacheStorage() {
        return new Cache();
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *