在一个正在运行的spring应用程序中,它是否可以监视一个文件夹,在该文件夹下我可以放置更多配置文件,其中定义了更多bean?我不想停止应用程序,但希望能够添加更多的bean,所以我想创建一个文件夹,然后将bean定义放入该文件夹中,让spring选择并初始化bean。我想知道它是否可行
答案 0 :(得分:1)
你需要两件事
用于监视文件系统更改的文件监视器 - JDK7提供了way来执行此操作。
刷新应用程序上下文 - 您可以使用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