如何在spring中动态加载配置文件

时间:2014-12-07 13:06:27

标签: java spring

在一个正在运行的spring应用程序中,它是否可以监视一个文件夹,在该文件夹下我可以放置更多配置文件,其中定义了更多bean?我不想停止应用程序,但希望能够添加更多的bean,所以我想创建一个文件夹,然后将bean定义放入该文件夹中,让spring选择并初始化bean。我想知道它是否可行

2 个答案:

答案 0 :(得分:1)

你需要两件事

  1. 用于监视文件系统更改的文件监视器 - JDK7提供了way来执行此操作。

  2. 刷新应用程序上下文 - 您可以使用refresh类之一的AbstractRefreshableApplicationContext方法:它不会刷新以前实例化的bean,但下一次调用上下文将返回刷新的豆子。

答案 1 :(得分:0)

您可以创建属性文件并动态加载

参考下面我在项目中使用的代码:

private static Properties beanProps = new Properties();
beanFactoryFileProps.load(AppContext.class
                    .getResourceAsStream("configFile.properties"));
            Collection props = beanProps.values();
            String[] configFiles = null;
            if (!Utils.isEmpty(props)) {
                Object[] config = props.toArray();
                configFiles = new String[config.length];
                for (int i = 0; i < config.length; i++) {
                    configFiles[i] = (String) config[i];
                }
            } 
            else
            {
                configFiles=new String[] {"dispatcher-servlet.xml"};
            }

属性文件如下

file1=dispatcher-servlet.xml
file2=ApplicationContext.xml
file2=QuartzSchedulerContext.xml