Tak, możesz to zrobić. Docs sprężyste znaczy:
Jest również możliwe podanie wszystkich ziaren konkretnego rodzaju z ApplicationContext dodając adnotacje na polu lub w sposób, który oczekuje szereg tego typu.
Należy pamiętać, że trzeba się spodziewać tablicy, a nie listy. Ma to sens, ponieważ ogólny typ wymazania oznacza, że lista może nie działać w środowisku wykonawczym. Jednak podjąć następujące badanej jednostki, która działa:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean class="test.Test.TypeB"/>
<bean class="test.Test.TypeC"/>
<bean class="test.Test.TypeD"/>
</beans>
i ten test Jednostka:
package test;
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class Test {
private @Autowired List<TypeA> beans;
@org.junit.Test
public void test() {
assertNotNull(beans);
assertEquals(2, beans.size());
for (TypeA bean : beans) {
assertTrue(bean instanceof TypeA);
}
}
public static interface TypeA {}
public static class TypeB implements TypeA {}
public static class TypeC extends TypeB {}
public static class TypeD {}
}
Więc oficjalnie, masz za zadanie autowire TypeA[]
, nie List<TypeA>
, ale lista działa dobrze.
Jak chcesz tę listę do pracy z prototypami? Jeśli zawiera tylko jedną instancję, dodaj każdą instancję (wyciek pamięci) lub wróć przez jakąś słabą listę referencyjną. –
wszystkie ziarna będą pojedynczo w moim przypadku. –