Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (11)

Лучшие ответы пользователя

Все ответы (12)
  • Зачем нужна @Qualifier, если после нее ничего нет?

    @Anrek Автор вопроса
    Я разобрался. Есть @Qualifier из разных пакетов. Оба они касаются DI (внедрения зависимостей).

    В реальной жизни может сложится ситуация, когда создаётся несколько бинов одного и того же типа (например, с 1 и тем же интерфейсом), но в конкретном случае например необходим конкретный бин. @Qualifier — аннотация позволяет уточнить какой именно.

    1) Есть @Qualifier, которая импортируется из пакета CDI JSR 330 (CDI-это стандарт Java для контекстов и внедрения зависимостей, а JSR-330-это его подмножество, которое он полностью поддерживает), импортируется так:
    import javax.inject.Qualifier
    Ее уточнение не добавляется, просто пишется так:
    @Qualifier

    2) Есть @Qualifier, которая импортируется из пакета фреймворка Spring (фреймворк для внедрения зависимостей), импортируется так:
    import org.springframework.beans.factory.annotation.Qualifier

    И ей как раз указывается "уточнение" в скобках:
    @Qualifier("appContext1")

    В Spring бин называется по имени и вызывается явно по нему.

    В случае JSR 330 для этого создается своя аннотация для разделения зависимостей с одинаковыми интерфейсами и затем применяется и к классу бина и к зависимости. Документ про который шла речь в вопросе как раз перечень таких аннотаций.

    Итого: в Spring - определяемся с необходимым бином по его имени, а в JSR 330 - по имени его аннотации и удобно перечень всех этих аннотаций собрать в отдельный файл (что и сделали).

    Источник (тут же можно и примеры посмотреть)
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (38)