Yup, bạn có thể thực hiện việc này. Các tài liệu xuân nói:
Nó cũng có thể cung cấp tất cả đậu của một loại đặc biệt từ ApplicationContext bằng cách thêm chú thích để một lĩnh vực hoặc phương pháp mà hy vọng một mảng của loại đó.
Lưu ý rằng nó cho biết bạn cần mong đợi một mảng chứ không phải danh sách. Điều này có ý nghĩa, bởi vì xóa kiểu chung chung có nghĩa là một danh sách có thể không hoạt động trong thời gian chạy. Tuy nhiên, tham dự kỳ thi sau đây đơn vị, trong đó hoạt động:
<?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>
và kiểm tra đơn vị này:
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 {}
}
Vì vậy, chính thức, bạn đang phải autowire TypeA[]
, không List<TypeA>
, nhưng danh sách hoạt động tốt.
Làm thế nào để bạn muốn danh sách này để làm việc với nguyên mẫu? Nếu nó chỉ chứa một thể hiện, có mỗi trường hợp được thêm vào (rò rỉ bộ nhớ) hoặc được quay trở lại bởi một số dạng danh sách tham chiếu yếu. –
tất cả các hạt cà phê sẽ là đơn trong trường hợp của tôi –