在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初始化完成后不需要当前加载的单例.
感谢您的帮助.
解决方法
您可以将现有上下文用作其他上下文的父上下文,但我怀疑您是否可以替换现有的WebApplicationContext.
如果您使用EAR-WAR打包,则可以通过从EAR加载应用程序上下文然后在WAR中添加一个应用程序上下文来获得开箱即用(类型).
不确定这是否适用于您的情况.