我有一个包含列表的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库的一部分。
答案 0 :(得分:0)
我有一个线程可以定期触发设备并获得 构造函数注入初始设备列表。
您始终可以通过sensorTriggerThread
中的setter方法设置新设备列表。
答案 1 :(得分:0)
我通过将@Autowired注释更改为@Resource(name =“deviceList”)注释来解决问题。不知道为什么这是必要的,因为我只在XML文件中配置了1个设备列表,但现在它可以工作。