Использование Spring, я могу получить все бобы определенного типа, которые в настоящее время определяются с помощью этого:Зависимость Инъекция по типу с использованием дженериков - как это работает?
@Resource
private List<Foo> allFoos;
Как Spring сделать это? Я думал, что информация типа дженериков была стерта во время выполнения. Итак, как Spring знает о типе Foo
списка и только вводит зависимости правильного типа?
Чтобы проиллюстрировать: у меня нет компонента типа «Список», который содержит другие бобы. Вместо этого Spring создает этот список и добавляет в этот список все бобы нужного типа (Foo
), а затем вводит этот список.
1) Тип стирания происходит во время компиляции, * не * во время выполнения; 2) все типы, указанные в объявлениях параметров поля и метода/конструктора, полностью сохраняются в байт-кодере компилятором и доступны во время выполнения через API Java Reflection. Таким образом, Spring делает это путем получения типа элемента поля allFoos из соответствующего объекта 'java.lang.reflect.Field'. –