Автоматическая повторная инициализация конфигурации в Spring - PullRequest
12 голосов
/ 20 января 2009

В Log4j есть функция, при которой система может быть инициализирована для выполнения настройки и просмотра с интервалом. Это позволяет системе log4j перезагружать свои свойства при каждом изменении файла свойств. Есть ли у Spring Framework такое средство наблюдения за конфигурацией, в котором конфигурация перезагружается при ее изменении. Конфигурация, требующая перезагрузки, - это не applicationContext.xml Springs, а различные другие файлы конфигурации, которые инициализируются с помощью компонентов инициализации Spring.

Ответы [ 5 ]

7 голосов
/ 20 января 2009

Я нашел утилиту, которая делает что-то похожее на Log4J здесь . По сути это расширение PropertyPlaceholderConfigurer, которое перезагружает свойства при их изменении.

3 голосов
/ 20 января 2009

AFAIK Spring не предоставляет такой утилиты. Однако существует сторонний инструмент JRebel , который позволяет обновлять все веб-приложение (включая конфигурацию Spring) без перезагрузки сервера.

Бесплатная пробная версия доступна, и цена покупки довольно недорогая.

1 голос
/ 21 января 2009

Я был бы очень осторожен с перезагрузкой контекста приложения Spring.

Что вы ожидаете от бобов-одиночек? Если объект имеет ссылку на одноэлементный компонент, должен ли он быть обновлен?

0 голосов
/ 09 мая 2012

Если вы хотите добавить контекст, я сделал это следующим образом:

public class ApplicationContextUtil
{
   static String[] configFiles = {"applicationContextParent.xml"};

   private static ApplicationContext context = null;

   static
   {
       context = new ClassPathXmlApplicationContext ( configFiles );
   }

   public static void addContext( String[] newConfigFiles )
   {
       // add the new context to the previous context
       ApplicationContext newContext =  new ClassPathXmlApplicationContext ( newConfigFiles, context );
       context = newContext;
   }   
   public static ApplicationContext getApplicationContext ()
   {
       // return the context
       return context;
   }
}

Это ваш класс провайдера контекста. Подробнее вы можете посмотреть на мой блог

0 голосов
/ 26 сентября 2011

Я разрабатываю с использованием JRebel, и я бы очень опасался, что он обновит вашу конфигурацию. Прекрасно работает с Java, но не с Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...