2016-01-30 56 views
0

我有一個包含列表如何來操作XML定義在Java中

<util:list id="deviceList" value-type="package.path.to.Device"> 
    <ref bean="device1"/> 
    <ref bean="device2"/> 
</util:list> 

正被自動連接到我的Java代碼中的XML Spring配置列表豆:

@Autowired 
private List<Device> devices; 

由於我的工作在動態Web項目上,可以在運行時在列表中添加和刪除設備。

我有觸發週期性的設備上的傳感器的螺紋,並且獲得構造噴射的初始設備列表:

<bean id="sensorTriggerThread" scope="singleton" class="package.path.to.SensorTriggerThread"> 
    <constructor-arg> 
     <ref bean="deviceList"/> 
    </constructor-arg> 
</bean> 

我可以添加並與devices.add/devices.remove通常刪除新設備方法,但這並不影響XML文件中的列表,這會導致新創建的設備不會被觸發。我對Spring相當陌生,看起來我發現自動裝配在兩個方向都不起作用。 如何操作Java類中的XML文件中的設備列表? 我知道有可能以某種方式將此列表編輯爲一個bean,以便與其相關的應用程序的所有部分也可以獲得這些更改。

編輯:我應該提到我沒有對SensorTriggerThread文件的寫入權限,因爲它是jar庫的一部分。

+0

似乎'SensorTriggerThread'不會爲您的列表使用引用,但會將'devuceList'項目複製到內部列表中。這就是爲什麼'deviceList'的任何改變都沒有效果。 –

回答

0

我通過將@Autowired註釋更改爲@Resource(name =「deviceList」)註釋解決了該問題。不知道爲什麼這是必要的,因爲我只有1個XML文件中配置的設備列表,但現在它工作。

0

我有周期性觸發裝置的螺紋和得到 通過構造注射初始設備列表

您始終可以通過sensorTriggerThread中的setter方法設置新設備列表。

+0

這將工作,但SensorTriggerThread不是我的源文件,而是jar庫的一部分。對不起,我應該提到這一點。 – blackcatalive