使用多个线程加载spring上下文

时间:2015-01-22 09:17:54

标签: multithreading spring applicationcontext

我有一个大型应用程序上下文,包含许多上下文文件,使用自动装配和包扫描,启动Web服务,建立与数据库的连接以及外部遗留系统等。我一直在考虑如何改善上下文加载时间,因为它需要一段时间而不会真正占用CPU。有没有办法告诉应用程序上下文使用多个线程进行初始化?理论上应该是可能的,因为我们已经定义了依赖关系。我希望并行初始化资源(db,web services和legacy connections)。

1 个答案:

答案 0 :(得分:2)

有一个选项出现在我的脑海中,我不确定它是否会起作用,因为我从未尝试过这样做(在我看来,如果应用需要太长时间启动是一个标志,它必须在较小的组件中分解,其中每个组件本身就是一个应用程序。)

我认为可能有效的解决方案是拥有上下文文件的层次结构,因此您可以实例化父应用程序上下文,然后同时实例化每个子上下文。这种方法的问题在于你不能在子上下文之间存在依赖关系,但你可以有间接关系(例如,父上下文有一个事件调度程序,然后一个上下文中的类侦听从父上下文触发的事件,另一个子上下文触发事件在父上下文中。)