在 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 一旦初始化完成,就不需要当前加载的单例。
感谢您的帮助。