私はSpringアプリケーションを持っています(WebアプリケーションではなくSpringBatch)。テストクラスでは、特定のタイプのすべてのBeanへのアクセスを取得したいと思います。
春には、通常IOCを使用して、コンテナーにBeanを注入させる必要があることを理解しています。ただし、この場合、特定のクラス(org.springframework.batch.item.database.JdbcCursorItemReader)を拡張する可変数のBeanをループして、何かを実行します(接続するだけのユニット/統合テストにします)。これをデータベースに送信して1行を読み取るため、テスト時に、システム内のすべてのJdbcCursorItemReaderに有効なSQLおよび行マッパーがあることを確認できます。
問題1)一度に1つしか豆を入手できません。クラスにBeanFactoryAwareを実装させて、自分のBeanfactoryへの参照を取得することができます。次に、beanFactory.getBean( "name");を実行できます。単一のBeanにアクセスします。代わりにすべてのBeanを取得するにはどうすればよいですか?ループして、必要なクラスではないものを削除することはできますが、どういうわけか、Beanfactoryが知っているすべてのBeanのリストなどが必要です。
問題2)Beanfactoryから返されるBeanはプロキシです。Beanをキャストして使用しようとすると、 java.lang.ClassCastExceptionのようなものが表示されます。$Proxy0をorg.springframework.batch.item.database.JdbcCursorItemReaderにキャストできません。