Tôi đã tạo một bean mùa xuân có chứa một danh sách các loại đậu khác, như vậy:Xuân XML đậu bên trong câu hỏi
<bean name="InventoryManager" class="InvManager">
<property name="slots">
<bean class="HeadSlot" />
<bean class="ShoulderSlot" />
<!-- ... -->
</property>
</bean>
Vấn đề, tuy nhiên, là ở nơi khác tôi đã sử dụng một chú thích @Autowired
trong lớp khác để lấy một danh sách tất cả đậu thực hiện một giao diện chắc chắn rằng một số trong những đậu bên trong thực hiện, như vậy:
@Autowired
public void registerInventoryHandlers(List<InvSlot> slots) {
//... do some setup stuff with beans that implement the InvSlot interface.
}
vấn đề ở đây là dường như "đậu bên trong" được định nghĩa trong XML không nằm trong danh sách @Autowired
. Tuy nhiên, việc đưa tất cả các tên hạt đậu và sau đó tham khảo chúng từ XML có vẻ không cần thiết và xấu xí.
Có cách nào để xác định một bean bên trong một bean khác, nhưng không phải là bean "bên trong"? Hoặc là có một cách tốt hơn để xử lý thiết kế này?
Ah, ngược lại! @Autowired có một số ứng dụng đáng ngạc nhiên, ít được biết đến hơn. Để trích dẫn tài liệu của Spring: "Cũng có thể cung cấp tất cả các loại hạt của một loại cụ thể từ ApplicationContext bằng cách thêm chú thích vào một trường hoặc phương thức dự kiến một mảng thuộc loại" –
địa ngục đẫm máu ". Tôi cảm ơn bạn, bạn đã dạy tôi một điều mới :) – skaffman
Tôi đã cố gắng sử dụng nó để cấp nguồn cho một loại "không cần phải đăng ký cho mình" hàng đợi sự kiện và nghĩ mình đẫm máu thông minh. Nhưng rồi tôi chạy vào cái giun đặc biệt này. –