ing*_*ous 5 java spring lazy-initialization
最近,我利用春季延迟初始化功能开始了很多。所以我一直在徘徊 - 懒惰地初始化你的豆子有什么实际的缺点吗?如果不是 - 为什么不是默认行为懒惰?
主要的“缺点”不是立即捕获配置问题。如果您有一个仅“偶尔”使用的 bean,并且该 bean 配置错误,则您的应用程序可能会在生产环境中停留数天,然后才会使用该 bean 并引发错误。最好在启动时了解这个问题。
此外,通常更希望在启动时而不是在使用期间支付初始化成本(即性能、时间延迟等)。例如,在 Web 应用程序中,您需要在启动时初始化 bean 的成本,而不是客户第一次使用您的购物车(等待购物车 bean 进行第一次初始化),然后在她去结帐时再次使用,然后在处理付款时再次执行,等等。
这些是一些原因。
[编辑]
ps 来自 Spring 参考指南部分6.4.4 Lazy-initialized beans
默认情况下,ApplicationContext 实现会在初始化过程中急切地创建和配置所有单例 bean。通常,这种预实例化是可取的,因为可以立即发现配置或周围环境中的错误,而不是在几小时甚至几天之后。当这种行为不可取时,您可以通过将 bean 定义标记为延迟初始化来防止单例 bean 的预实例化。一个延迟初始化的 bean 告诉 IoC 容器在它第一次被请求时创建一个 bean 实例,而不是在启动时。
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |