我已經創建了一個Spring bean含有其他bean的列表,像這樣內部bean:春XML問題
<bean name="InventoryManager" class="InvManager">
<property name="slots">
<bean class="HeadSlot" />
<bean class="ShoulderSlot" />
<!-- ... -->
</property>
</bean>
,但問題是,其他地方我已經在其他類使用的@Autowired
註釋搶實現某個接口,其中一些內部bean的實現,像這樣所有Bean的列表:
@Autowired
public void registerInventoryHandlers(List<InvSlot> slots) {
//... do some setup stuff with beans that implement the InvSlot interface.
}
這裏的問題是,顯然是「內部豆」在XML定義不是@Autowired
列表的一部分。但是,給所有這些slot bean名稱,然後從XML中引用它們看起來沒有必要和難看。
有沒有一種方法來定義另一個bean裏面一個bean,但不會是一個「內部」豆?還是有更好的方法來處理這種設計?
啊,相反! @Autowired有一些令人驚訝的,鮮爲人知的用途。引用Spring的文檔:「也可以通過添加註釋到期望類型的數組字段或方法來提供從ApplicationContext的一個特定類型的所有豆」 – 2009-08-12 16:28:57
該死的,它確實是這樣。我謝謝你,先生,你已經給了我一個新的東西:) – skaffman 2009-08-12 16:54:05
我試圖用它來驅動一種「並不需要註冊自己」事件隊列,並認爲自己聰明的血腥。但後來我遇到了這種特殊的蠕蟲病毒。 – 2009-08-12 19:54:27