分阶段加载弹簧上下文

时间:2012-07-05 07:18:59

标签: java spring jetty jax-rs

这是人们会问的奇怪问题之一 - 为什么?

因此,我将首先介绍为什么我要这样做,然后再讨论这个问题。我想更多地控制如何加载spring上下文。例如,我不想同时加载域和web-api。这将使资源在其依赖项准备好之前可用。 在继续此过程之前,我可能还需要检查某些事情的状态。所以说,模块/上下文之间会有顺序。也许不仅仅是启动而且还是关机。

所以问题是我找不到任何关于如何加载域上下文的信息,然后当它完成时我将检查状态并最后加载api-context。我想从java代码中完成所有这些操作,因为我需要控制启动流程。我有使用SpringServlet加载Web上下文的基础知识。我没有找到任何信息的是,是否可以加载上下文,等待并加载引用第一个上下文的另一个上下文。

知道我不使用JavaEE也不是容器可能会很好。我只使用带有servlet和spring的嵌入式Jetty。那么有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

我建议考虑以下事项:

  • 根据应用程序上下文生命周期管理的顺序,阅读SmartLifeCyclePhased以获取扩展点。我们的想法是让您的顶级重要bean实现接口,以便按照您自定义的顺序处理标准应用程序上下文初始化。
  • 将应用程序上下文XML文件分解为更小的部分。在依赖于更高/更低上下文的那些中使用<import />
  • 在关键任务bean上使用depends-on属性以确保依赖关系。
  • 使用InitializingBean来确保当前bean初始化后确保满足依赖关系。

答案 1 :(得分:0)

考虑延迟加载的bean和Lazy Proxy。 所以只有在第一次使用时才会创建bean ...