如何在Java中操作XML中定义的列表bean

时间:2016-01-30 23:29:19

标签: java xml spring list

我有一个包含列表的XML Spring配置

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

正在自动装入我的Java代码:

@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库的一部分。

2 个答案:

答案 0 :(得分:0)

  

我有一个线程可以定期触发设备并获得   构造函数注入初始设备列表

您始终可以通过sensorTriggerThread中的setter方法设置新设备列表。

答案 1 :(得分:0)

我通过将@Autowired注释更改为@Resource(name =“deviceList”)注释来解决问题。不知道为什么这是必要的,因为我只在XML文件中配置了1个设备列表,但现在它可以工作。