假设我有几个spring bean:
<beans>
<bean name="A" ... />
<bean name="B" ... />
</beans>"B“公开了一个不需要"A”的远程服务。假设"A“花了不可忽略的时间来加载。这意味着在重新启动周期中,应用程序挂起远程客户端,该客户端实际上可以连接到服务器,但会等待响应,直到spring容器完全初始化。
我希望能够做的是让"B“远程服务立即响应,即使(基于应用程序状态)它只能返回NOT_READY或类似的内容。然而,即使您将bean指定为lazy-init并且与加载顺序无关,容器也会强制等待,直到它的所有bean都被初始化。
我怀疑让"B“立即可用意味着spring必须提供一个部分初始化的容器,这听起来很糟糕。但是,我非常感谢任何人得到的关于初始化顺序的任何信息,以及您是否找到了任何合理的解决方法。
发布于 2008-10-14 19:56:41
我不明白,为什么"A花了不可忽略的时间来加载“,但也许你可以通过重构A来懒惰地初始化自己。不要使用InitializingBean或处理ApplicationEvent。只需在要处理的第一个请求上进行初始化。这会减慢第一个请求的速度!
另一种可能是将初始化移动到由处理ApplicationEvent的bean创建的单独线程。线程以异步方式调用bean的初始化方法。小心处理对未初始化bean的请求!
https://stackoverflow.com/questions/201888
复制相似问题