Кинжал построен по стандарту JSR 330: внедрение зависимостей для Java . Таким образом, вы можете использовать эти аннотации, и они будут полностью поддерживаться. По этой же причине вам не нужно явно использовать @Qualifier
. Вы можете использовать аннотацию @Named
, которая сама имеет аннотации @Qualifier
.
В первой записи добавьте @Named("authorized")
, а во второй добавьте @Named("basic")
. Вы можете добавить дополнительные реализации аналогичным образом. Теперь, когда вам нужно внедрить ваш экземпляр, используйте ту же аннотацию для определения типа. Таким образом, ваш общий код становится
Авторизованным:
@Provides
@Singleton
@Named("authorized")
OkHttpClient.Builder provideOkHttpClientBuilderWithAuthorization(...)
Базовым:
@Provides
@Singleton
@Named("basic")
OkHttpClient.Builder provideOkHttpClientBuilder(...)
Для внедрения authorized
типа экземпляра, теперь вы можете использовать
@Inject
@Named("authorized")
OkHttpClient.Builder authorizedBuilder;
Аналогично вводу basic
, вы можете использовать
@Inject
@Named("basic")
OkHttpClient.Builder basicBuilder;
Для получения более подробной информации о том, как использовать кинжал, посетите руководство пользователя кинжала