У меня есть веб-сервис, который извлекает свойство из файла application.properties, расположенного на сервере, например query[testSql] через spring
public class RuntimeEnvironmentPropertiesConfigurerextends PropertyPlaceholderConfigurer
implements InitializingBean, RuntimeEnvironmentInterface
Теперь этот запрос вводится в мой дао Spring bean.
<bean id="dao" name="dao" class="com.dao.DaoImpl">
<property name="ackJdbcTemplate" ref="ackJdbcTemplate" />
<property name="testSql" value="${dao.query.tSql}" />
</bean>
С помощью Как я могу перезагрузить файл свойств в Spring 4 с помощью аннотаций? ссылка Я могу перезагрузить свойство во время выполнения. проверено
@Autowired
public RuntimeEnvironmentInterface propertyLoader;
....
Set s=propertyLoader.getProperties();
Iterator itr=s.iterator();
while(itr.hasNext()){
String tempKey=String.valueOf(itr.next());
logger.info(tempKey +"==="+propertyLoader.getProperty(tempKey));
но проблема в том, что мой компонент dao не принимает обновленный запрос testSql. Он работает на старом, пока я не перезапущу приложение.
Я нашел способ, как в отдельном сопоставлении URL-адресов, я написал метод, который выполняет следующую работу:
Dao.setTestSql(propertyLoader.getProperty("com.dao.query.tSql"));
и человек, который обновляет, должен нажать на URL-адрес после обновления свойства.
Но это я должен сделать для всего bean-компонента и введенного свойства. Это довольно лихорадочная работа. Я пропускаю одно свойство, и я обречен. Есть ли другой способ автоматического обновления внедренного bean-компонента? Мне нужно, чтобы мои обновленные свойства отражались без перезапуска.
Я пытался понять данный код wuenschenswert, но не смог.