avec Spring, je peux obtenir tous les haricots d'un certain type qui sont actuellement définies en utilisant ceci:Dépendance Injection par type utilisant des génériques - comment ça marche?
@Resource
private List<Foo> allFoos;
Comment Spring faire cela? Je pensais que les informations de type génériques étaient effacées lors de l'exécution. Alors, comment Spring connaît-il le type Foo
de la liste et n'injecte que les dépendances du type correct? Par exemple: Je n'ai pas de bean de type "List" qui contient les autres beans. Au lieu de cela, Spring crée cette liste et ajoute tous les beans du type correct (Foo
) à cette liste, puis injecte cette liste.
1) de type effacement se produit à la compilation, * pas * lors de l'exécution; 2) tous les types spécifiés dans les déclarations de paramètres champ et méthode/constructeur sont entièrement conservés dans le bytecode par le compilateur et sont disponibles au moment de l'exécution via l'API Java Reflection. Ainsi, Spring le fait en obtenant le type d'élément du champ 'allFoos' de l'objet' java.lang.reflect.Field' correspondant. –