2009-01-20 16 views
12

W Log4j dostępna jest funkcja, w której można zainicjować system, aby skonfigurować i obserwować z przerwą. Dzięki temu system log4j może ponownie załadować swoje właściwości, gdy plik właściwości zostanie zmieniony. Czy struktura sprężynowa posiada takie narzędzie do monitorowania konfiguracji, w którym konfiguracja jest ponownie ładowana po zmianie. Konfiguracja wymagająca przeładowania nie jest aplikacją SpringsContext.xml, ale różnymi innymi plikami konfiguracyjnymi inicjowanymi za pomocą fasoli inicjalizującej Spring. Ponowna inicjalizacja konfiguracji automatycznej na wiosnę

Odpowiedz

7

Znalazłem narzędzie, które robi coś podobnego do Log4J here. Jest to w zasadzie rozszerzenie do PropertyPlaceholderConfigurer, które przeładowuje właściwości po ich zmianie.

+1

Zostało to zaadaptowane na https://github.com/Unicon/springframework-addons/wiki/Auto-reloading-properties-files – Vadzim

+0

@ Vadzim link jest martwy! To może nam pomóc w powyższym przykładzie: http://projects.spring.io/spring-cloud/spring-cloud.html – pramodc84

+1

@ pramodc84, zaktualizowane linki: http://maven-repository.com/artifact/net.unicon.springframework /springframework-addons/0.1, https://github.com/UniconLabs/springframework-addons/blob/master/src/main/java/net/unicon/springframework/addons/properties/ReloadingPropertyPlaceholderConfigurer.java, https: // github .com/knightliao/disconf/blob/master/disconf-client/src/main/java/com/baidu/disconf/client/addons/properties/ReloadingPropertyPlaceholderConfigurer.java – Vadzim

4

AFAIK Spring nie zapewnia takiego narzędzia. Istnieje jednak narzędzie innej firmy, JRebel, które umożliwia aktualizację całej aplikacji internetowej (w tym konfiguracji Spring) bez konieczności restartowania serwera.

Darmowa wersja próbna jest dostępna, a cena zakupu jest dość tania.

2

Byłbym bardzo ostrożny przy przeładowywaniu kontekstu aplikacji sprężynowej.

Czego oczekujesz od pojedynczej fasoli? Jeśli obiekt ma odniesienie do pojedynczej fasoli, czy powinien zostać zaktualizowany?

+0

Nie chcę ponownie wczytać spring appcontext.xml ani żadnego z fasola już załadowana. Wypróbuję rozwiązanie opublikowane przez Phill Sacre. – zkarthik

1

Rozwijam się przy użyciu JRebel i byłbym bardzo ostrożny, oczekując odświeżenia konfiguracji. Działa dobrze z Javą, nie ze Springem.

-1

Jeśli chcesz dodać kontekst, zrobiłem to w następujący sposób:

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; 
    } 
} 

To jest klasa dostawca kontekst. Aby uzyskać szczegółowe informacje, można spojrzeć na my blog