2009-01-20 21 views
12

En Log4j, hay una función en la que el sistema se puede inicializar para realizar una configuración y observar con un intervalo. Esto permite que el sistema log4j recargue sus propiedades siempre que se cambie el archivo de propiedades. ¿El marco de primavera tiene una instalación de Observer de Configuración en la que la Configuración se recarga cuando cambió? La Configuración que necesita recargarse no es la applicationContext.xml de Springs sino varios otros archivos de configuración que se inicializan utilizando los beans de inicialización de Spring. Reinicialización de configuración automática en Spring

Respuesta

7

Encontré una utilidad que hace algo similar a Log4J here. Básicamente es una extensión de PropertyPlaceholderConfigurer que vuelve a cargar las propiedades cuando cambian.

+1

Este fue adaptado al https://github.com/Unicon/springframework-addons/wiki/Auto-reloading-properties-files – Vadzim

+0

enlace @Vadzim está muerto! Esto podría ayudarnos en el caso anterior http://projects.spring.io/spring-cloud/spring-cloud.html – pramodc84

+1

@ pramodc84, enlaces actualizados: 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 no proporciona tal utilidad. Sin embargo, hay una herramienta de terceros, JRebel, que le permite actualizar una aplicación web completa (incluida la configuración Spring) sin necesidad de reiniciar el servidor.

Hay una versión de prueba gratuita disponible, y el precio de compra es bastante económico.

2

Sería muy cauteloso con el contexto de la aplicación de primavera de recarga.

¿Qué espera que suceda con los granos de singleton? Si un objeto tiene una referencia al bean Singleton, ¿debería actualizarse?

+0

No quiero volver a cargar spring applicationcontext.xml o cualquiera de los frijoles ya están cargados. Voy a probar la solución que Phill Sacre publicó. – zkarthik

1

Desarrollo usando JRebel y sería muy cauteloso al esperar que actualice su configuración. Funciona bien con Java, pero no con Spring.

-1

Si desea añadir contexto, he hecho eso de la siguiente manera:

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

Ésta es la clase de proveedor de contexto. Para más detalles, se puede ver en my blog

Cuestiones relacionadas