Erhalten Sie Zugriff auf alle spring-beans eines Typs

Ich habe eine Spring-Anwendung (Spring Batch nicht-web-Anwendung). In einer test-Klasse, die ich packen möchte Zugriff auf alle meine Bohnen von einem bestimmten Typ.

Ich verstehe, dass im Frühjahr sollten Sie verwenden in der Regel IOC und lassen Sie den Behälter Spritzen Sie Ihre Bohnen. Aber in diesem Fall möchte ich eine Schleife durch eine variable Anzahl von Bohnen, die für die Erweiterung einer bestimmten Klasse (org.springframework.batch.Element.Datenbank.JdbcCursorItemReader), und etwas tun (wollen, dass es eine unit/- integration-test, die nur eine Verbindung mit der Datenbank und liest 1 Zeile, so können wir bestätigen, im test Zeit, dass alle JdbcCursorItemReader im system gültige SQL-und row-Mapper).

Problem 1) ich kann nur Bohnen ein zu einer Zeit. Ich kann meine Klasse implementieren BeanFactoryAware, um einen Verweis auf meine beanfactory. Dann kann ich beanFactory.getBean("name"); für den Zugriff auf eine einzelne Bohne. Wie kann ich stattdessen bekommen ALLE Bohnen? Ich kann in einer Schleife durch und fallen diejenigen, die nicht die Klasse, die ich will.. aber irgendwie muss ich eine Liste mit allen Bohnen die beanfactory kennt oder so etwas.

Problem 2) Die Bohne ich wieder aus der beanfactory ist ein proxy. Wenn ich versuche zu casten und meine Bohne bekomme ich so etwas wie
java.lang.Classcastexception-Fehler: $Proxy0 kann nicht umgewandelt werden, org.springframework.batch.Element.Datenbank.JdbcCursorItemReader

InformationsquelleAutor bwawok | 2010-10-09
Schreibe einen Kommentar