Получите доступ ко всем компонентам Spring данного типа

У меня есть приложение Spring (Spring Batch, а не веб-приложение). В тестовом классе я хочу получить доступ ко всем своим bean-компонентам данного типа.

Я понимаю, что в Spring обычно следует использовать IOC и позволить контейнеру внедрять ваши beans. Однако в этом случае я хочу перебрать переменное количество bean-компонентов, расширяющих данный класс (org.springframework.batch.item.database.JdbcCursorItemReader), и сделать что-нибудь (хочу, чтобы это был тест модуля / интеграции, который просто подключает его в базу данных и читает 1 строку, поэтому мы можем подтвердить во время тестирования, что все JdbcCursorItemReader в системе имеют допустимые SQL и преобразователи строк).

Проблема 1) Я могу получить только bean-компоненты по одному за раз. Я могу сделать так, чтобы мой класс реализовал BeanFactoryAware , чтобы получить ссылку на мою beanfactory. Затем я могу выполнить beanFactory.getBean ("name"); , чтобы получить доступ к одному bean-компоненту. Как мне вместо этого получить ВСЕ бобы? Я могу пройтись по циклу и отбросить те, которые не являются тем классом, который мне нужен ... но почему-то мне нужен список всех beans, о которых beanfactory знает или что-то в этом роде.

Проблема 2) Bean, который я получаю от beanfactory, является прокси. Если я попытаюсь применить и использовать свой bean-компонент, я получу что-то вроде java.lang.ClassCastException: $ Proxy0 нельзя преобразовать в org.springframework.batch.item.database.JdbcCursorItemReader

7
задан Sean Patrick Floyd 11 October 2010 в 09:05
поделиться