2014-04-24 2 views
2

Скажем, у меня есть две службы AService и BService, для которых требуется ключ api.Почему Кинжал не допускает множественные аннотации классификатора на элемент?

Так что в моих модулях, я не могу сделать что-то вроде:

@Provides @Singleton @A @ApiKey String provideAKey() { return "a"; } 
@Provides @Singleton @B @ApiKey String provideBKey() { return "b"; } 

(Dagger пожалуется с «только один классификатор аннотаций допускается для каждого элемента»). Вместо этого я должен определить два отдельных классификатора для каждой комбинации: @ApiKeyA и @ApiKeyB.

Для службы с несколькими зависимостями (думаю, сетевой клиент, заголовки запросов и т. Д.) Становится громоздким определять эти квалификаторы для каждой комбинации, а не просто комбинировать разные аннотации.

Есть ли причина, почему это явно запрещено?

ответ

2

Это упрощает реализацию кинжала и делает его быстрее.

1

См. this issue: JSR330 запрещает иметь несколько аннотаций для классификаторов.

Для получения более подробной информации, this discussion может быть вам полезна.

Смежные вопросы