2009-02-27 7 views
5

Я использую Spring 2.5.6. У меня есть компонент, свойства которого присваиваются из файла свойств через PropertyPlaceholderConfigurer. Мне интересно, возможно ли обновить свойство компонента, когда файл свойства будет изменен. Был бы, например, некоторый периодический процесс, который проверяет последнюю измененную дату файла свойства, а если он изменился, перезагрузите компонент.Имея свойства весеннего боба обновляется автоматически из файла свойств

Мне интересно, есть ли что-то, что удовлетворяет моим требованиям. Если нет, то какой лучший подход к решению этой проблемы?

Благодарим за помощь.

ответ

3

Возможно также изучить использование свойства SpringSverrideConfigurer. Может перечитывать свойства и повторно применять их в некоторых группах опроса/расписания.

Это зависит от того, как эти настроенные бобы используют эти свойства. Они могут, например, косвенно кэшировать их где-то сами.

+0

Кажется, это самый простой подход, и это то, что мы закончим. Спасибо –

+0

Я не вижу разницы между PropertyOverrideConfigurer и PropertyPlaceholderConfigurer в этом отношении. Существуют различия в свойствах свойств, но оба они применяются только один раз как BeanFactoryPostProcessor до того, как будут созданы фактические компоненты. Как они могут быть повторно применены? –

+0

@hstoerr: с PropertyPlaceholderConfigurer настройки «скрыты» в конфигурации весны (xml) (с выражениями {..}). С PropertyOverrideConfigurer конфигурация находится в формате beanName.property = значение. Таким образом, это может быть повторно применено для извлечения bean-компонентов (например, PropertyOverrideConfigurer.processProperties – jor

0

Один из способов сделать это - встроить в приложение отличную консоль. Here's некоторые инструкции. Их было очень просто сделать, кстати, - у меня было очень мало времени, хотя я не так разбираюсь в хорошем.

После этого вы можете просто войти в консоль и изменить значения внутри реального приложения на лету.

2

Если вы хотите динамические свойства во время выполнения, возможно, другим способом это JMX.

0

Возможно, вы попытаетесь использовать настраиваемую область для компонента, который воссоздает бобы при изменении файла свойств. См. Мой more extensive answer here.

0

Spring Cloud Config имеет средства для изменения свойств конфигурации во время выполнения через Spring Cloud Bus и использование сервера облачных конфигураций. Конфигурация или .properties или .yml-файлы «экрнализируются» из приложения Spring и вместо этого извлекаются с сервера Spring Cloud Config, к которому приложение подключается при запуске. Этот Cloud Config Server извлекает соответствующие конфигурации .properties или .yml-файлы из репозитория GIT (существуют другие решения для хранения данных, но GIT является наиболее распространенным). Затем вы можете изменить конфигурацию во время выполнения, изменив содержимое конфигурационных файлов GIT-repo. Сервер Cloud Config передает изменения в любые приложения Client Spring через Spring Cloud Bus, а конфигурация этих приложений обновляется без необходимости перезапуска приложение. Здесь вы можете найти простой пример: https://github.com/ldojo/spring-cloud-config-examples