Obtenez l'accès à tous les beans spring d'un type donné

J'ai un traitement au Printemps (Spring Batch pas de l'application web). Dans une classe de test, je tiens à saisir l'accès à tous mes haricots d'un type donné.

Je comprends qu'au Printemps, il est généralement préférable d'utiliser du CIO et de laisser le conteneur injecter des haricots. Toutefois, dans ce cas, je veux faire une boucle par un nombre variable de haricots que d'étendre une classe donnée (org.springframework.lot.de l'élément.la base de données.JdbcCursorItemReader), et de faire quelque chose (vous voulez qu'il soit une unité/d'un test d'intégration qui vient de se connecte à la base de données et lit 1 ligne, de sorte que nous pouvons confirmer à tester le temps que tous les JdbcCursorItemReader dans le système de SQL valide et la ligne mappeurs).

Problème 1) je ne peut obtenir de haricots, un à un. Je peux avoir ma classe mettre en œuvre BeanFactoryAware pour obtenir une référence à mon beanfactory. Alors je peux le faire beanFactory.getBean("nom"); pour obtenir l'accès à un seul haricot. Comment puis-je, au lieu d'obtenir TOUS les haricots? Je peux en boucle et la chute de ceux qui ne sont pas la classe que je veux.. mais de toute façon j'ai besoin d'une liste de tous les haricots de la beanfactory sait ou quelque chose.

Problème 2) Le haricot je serai de retour à partir de la beanfactory est un proxy. Si j'essaie de la lancer et d'utiliser mon bean-je obtenir quelque chose comme
java.lang.ClassCastException: $Proxy0 ne peut pas être lancé pour org.springframework.lot.de l'élément.la base de données.JdbcCursorItemReader

OriginalL'auteur bwawok | 2010-10-09