Santa a une liste. Il veut faire un "cadeau" pour chaque enfant sur la liste d'hist (nous supposons pour le moment qu'ils sont tous bons) et les charge tous dans son traîneau. Peut-il le faire avec Spring?Spring FactoryBean - itérer sur une liste de "création d'objet"
J'ai écrit une FileListFactory simple qui implémente FactoryBean et retourne une liste de chaînes représentant les lignes d'un fichier donné. Mettez cela de côté pour l'instant - si nous résolvons le problème pour une liste <>, alors je suppose que je peux brancher une référence à la sortie de cette usine à sa place.
Ce que je veux est une liste d'objets "foo". Les objets foo sont des instances non-singleton de certains beans (probablement avec une définition de bean abstraite). Chaque objet foo créé obtient l'un des éléments de liste en tant que propriété. Pour remonter le niveau un an plus loin, la propriété en question est un objet "barre". J'ai déjà créé un éditeur de propriétés pour créer des objets "barre" à partir de chaînes. Ainsi, la chose qui itère sur la liste des chaînes doit utiliser l'infrastructure de l'éditeur de propriétés lors de la définition de la propriété par instance.
Il semble qu'il devrait y avoir une sorte de bean iterator de liste d'usine ou quelque chose pour cela. Le problème semble être que toutes les recherches que je fais pour trouver des exemples de solutions à cet échec échouent parce que les termes comme "liste" sont beaucoup trop génériques.
Vous avez la déclaration de corriger le problème, mais « Pour chacune des chaînes, créez une nouvelle BeanDefinition » Comment faites-vous cela? – nsayer
new ChildBeanDefinition ("myAbstractParentBean") Voir BeanDefinition, BeanDefinitionRegistry et implémentations. – lexicore
oh, je vois. Le BFPP prend la liste comme une propriété et le fait dans le code. J'ai fini par faire quelque chose de similaire pour résoudre ça, mais avec des haricots ordinaires. J'ai un objet de liste de barres branché dans un "FooListCreator" spécial. Ce gadget est BeanFactoryAware et demande une instance de "foo" pour chaque "barre" dans la liste, puis définit par programme la propriété de la barre. J'espérais juste que plus de ceci était faisable sans code Java réel - c'est-à-dire, dans le contexte de l'application, les fichiers xml eux-mêmes. – nsayer