2009-01-20 77 views
12

在Log4j中,可以初始化系统以执行配置并以间隔观察。这允许log4j系统在属性文件更改时重新加载其属性。春天框架是否有这样一个配置观察者设施,其中配置在它改变时被重新加载。需要重新加载的配置不是Spring的applicationContext.xml,而是使用Spring初始化bean初始化的各种其他配置文件。 Spring中的自动配置重新初始化

回答

7

我发现了一个类似于Log4J here的实用程序。它基本上是PropertyPlaceholderConfigurer的一个扩展,当它们改变时重新加载属性。

+1

这是在https://github.com/Unicon/springframework-addons/wiki/Auto-reloading-properties-files – Vadzim 2014-08-29 16:18:01

+0

@Vadzim链接死了!这可能有助于我们在上述情况下http://projects.spring.io/spring-cloud/spring-cloud.html – pramodc84 2017-12-22 08:49:07

4

AFAIK Spring不提供这样的实用程序。但是,有一个第三方工具JRebel,它使您可以在不需要重新启动服务器的情况下更新整个Web应用程序(包括Spring配置)。

有免费试用版,购买价格相当便宜。

2

我会特别小心,重新加载spring应用程序的上下文。

你认为单身豆会发生什么?如果一个对象有一个对singleton bean的引用,它是否应该更新?

1

我开发使用JRebel,我会非常警惕期望它刷新您的配置。与Java一起工作良好,但不是Spring。

-1

如果你想补充方面,我已经做到了下列方式:

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

这是您的上下文提供程序类。有关详细信息,你可以看看my blog