У меня есть следующие файлы:
propertiesContext. xml:
<bean id="properties" class="com.myProject.MyProperties"
factory-method="getInstance" />
MyProperties. java:
/*
This class contains initialises the properties and has listeners to change a property whenever it changes.
(The property is changed on a separate site to which the listeners listen).
getInstance() method returns an object of MyProperties.
It has Methods to return the properties.
*/
someContext. xml:
<util:map id="someConfig">
<entry key="someKey"
value="#{properties.getProperty()}" />
<entry key="key2" value="2" />
</util:map>
<bean id="factory1"
class="org.springframework.immutableClass1">
<constructor-arg index="0" ref="someConfig"></constructor-arg>
</bean>
<bean id="templateFactory"
class="org.springframework.immutableClass2">
<constructor-arg index="0" ref="factory1"></constructor-arg>
</bean>
Класс, относящийся к компоненту:
someClass. java :
@Autowired
@Qualifier("templateFactory")
private immutableClass2 template;
someOtherClass. java:
@listener(containerFactory = factory1, value="#{properties.getProperty()}")
void func()
{
...
}
Проблема заключается в том, что при изменении свойства класс MyProperties обновляет ha sh сопоставьте внутри него обновленные изменения, но карта someConfig в someConfig. xml не изменяется (очевидно).
Как сделать так, чтобы при каждом изменении свойства someConfig map также использует обновленное значение для someKey , а компоненты factory1 и templateFactory переинициализируются / обновляются соответственно?
Примечание: I не может добавлять методы в immutableClass1 и immutableClass2, поскольку классы встроены и, следовательно, являются неизменяемыми.