在Tomcat 6.0.18中启动我的Web应用程序后,我仅使用初始化系统所需的引导程序来引导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,一旦初始化完成就不需要当前加载的Singleton。
感谢您的帮助。
您可以将现有上下文用作其他上下文的父上下文,尽管我怀疑您可以替换现有的WebApplicationContext。
如果使用EAR-WAR打包,则可以通过从EAR加载应用程序上下文,然后在WAR中添加一个应用程序上下文来立即使用(某种)包装。
不确定这是否适用于您的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句