Инъекция зависимости с @inject в сварке (jsr-299 Ri). Как найден соответствующие @Produces?

StackOverflow https://stackoverflow.com/questions/2574304

Вопрос

Я играл с эталонной реализацией JSR-299 «сварным» с целью использования его в отдельной приложении, и я посмотрел на документацию, и удивился в магии.

Мой вопрос есть как Найден производитель данного объекта @ inject'е?

Либо Compiler Java производит подсказки для аннотаций, которые легко найдены классовым загрузчиком, или полная класса должна пройти загрузка всех классов, чтобы увидеть, что они делают, что звучит очень неэффективно для меня, или это совершенно другой подход.

Что такое трюк?

Это было полезно?

Решение

Классическая трата отсканирована на «бобовые архивы». Бобовые архивы - это те библиотеки, которые содержат META-INF/beans.xml. Отказ Все бобы в этих архивах автоматически зарегистрированы в BeanManager И их аннотации проанализированы и хранятся. Всякий раз, когда требуется производитель, менеджер Bean Consult Consact о подходящих производителях

Другие советы

Я предполагаю, что это работает так же, как в шов: в котором класса действительно отсканирована. Имплым также будет искать @Produce с наименьшим объемом соответствия, поэтому вы можете иметь, например, в одном изготовлении на уровне сеанса для зарегистрированных пользователей и другого на уровне приложений для анонимных пользователей.

Не знаю, но это @inject частично сделано отцом Hibernate, было окончательно переработано / под влиянием в конце Спрингсюрса и Google. Возможно, это работает немного похоже на резинку?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top