У меня есть приложение Spring (Spring Batch, а не веб-приложение). В тестовом классе я хочу получить доступ ко всем моим компонентам данного типа.
Я понимаю, что в Spring вы обычно должны использовать IOC и позволить контейнеру вводить ваши бины. Однако в этом случае я хочу перебрать переменное число bean-компонентов, расширяющих данный класс (org.springframework.batch.item.database.JdbcCursorItemReader), и сделать что-то (хочу, чтобы это был тестовый модуль / интеграционный тест, который просто соединяется он попадает в базу данных и читает 1 строку, поэтому во время теста мы можем подтвердить, что все JdbcCursorItemReader в системе имеют действительный SQL и средства отображения строк).
Проблема 1) Я могу получать бобы только по одному. Я могу попросить мой класс реализовать BeanFactoryAware , чтобы получить ссылку на мой beanfactory. Затем я могу сделать beanFactory.getBean ("name"); , чтобы получить доступ к одному бину. Как мне вместо этого получить ВСЕ бобы? Я могу перебрать и отбросить те, которые не являются тем классом, который мне нужен ... но мне как-то нужен список всех бинов, о которых знает beanfactory, или что-то в этом роде.
Проблема 2) Бин, который я возвращаю из бобовой фабрики, является прокси. Если я пытаюсь разыграть и использовать свой боб, я получаю что-то вроде
java.lang.ClassCastException: $ Proxy0 не может быть преобразован в org.springframework.batch.item.database.JdbcCursorItemReader