我可以将其他Spring配置文件动态加载到现有的WebApplicationContext中吗?

Ell*_*iot 7 java migration spring tomcat servletconfig

在Tomcat 6.0.18中启动我的webapp后,我只使用初始化系统所需的内容来引导Spring - 即,目前,数据库迁移.在迁移成功完成之前,我不希望加载系统的任何部分.这可以防止其他bean在操作或甚至实例化之前必须等待迁移完成.

我有一个配置了dbMigrationDAO的startup-appcontext.xml,一个是ThreadPoolExecutor的startupManager,最后是一个FullSystemLauch bean.我通过setter注入将配置位置列表传递给FullSystemLaunch bean.FullSystemLaunch bean实现ServletContextAware,获取对当前WebApplicationContext的引用,因此我可以拥有ConfigurableListableBeanFactory.不幸的是,这个bean工厂isConfigurationFrozen()返回true,所以通过调用beanFactory.setConfigLocations(configLocations)没有任何效果.

我可以做到这一点,还是Spring阻止我这样做,因为它有点与众不同?如果理解这似乎是合理的,但也有点危险.是的,我愿意吹掉当前的上下文b/c初始化完成后不需要当前加载的单例.

感谢您的帮助.

Maa*_*els 2

您可以使用现有上下文作为其他上下文的父上下文,尽管我怀疑您是否可以替换现有的 WebApplicationContext。

如果您使用 EAR - WAR 打包,则可以通过从 EAR 加载应用程序上下文然后在 WAR 中添加应用程序上下文来获得这种开箱即用的(某种程度上)。

不确定这是否适用于您的情况。