【问题标题】:Spring Lazy loadingSpring 延迟加载
【发布时间】:2017-04-15 22:43:22
【问题描述】:

有很多关于@Lazy 的示例和文档。也许我没有明白这一点,但为什么要使用它呢?实例化一个 bean 在启动时花费

【问题讨论】:

  • 如果构造函数(和构造后的钩子)没有太多事情要做,实例化一个 bean 的时间小于 1 毫秒。但他们可能需要更长的时间。想象一个 bean 在启动时读取许多文件,或者连接到一个缓慢且很少使用的外部服务。在大多数情况下,你都想要默认加载,而且它是一个更安全的默认值,但这并不意味着懒惰不能有用。
  • 不要获取其他文章的链接

标签: java spring lazy-loading


【解决方案1】:

当您的 @Lazy 注释组件依赖于某些基础设施来正确初始化时,延迟初始化可能很有用。因此,例如,如果您有一个组件需要在启动期间下载一些文件,那么使用@Lazy 注释它可能很有意义。这样它就不会在一段时间不使用时尝试下载文件(这需要很长时间)。

但是,我个人认为使用惰性组件通常会导致糟糕的设计。使用前请三思。

【讨论】:

  • 我不知道我是否会在这种情况下使用它。看看 Spring Boot Config Server(这是一个长期的场景),这可能是致命的。我在考虑 bean 不在 Singleton 范围内的场景。假设我们有一个有状态的服务,它只是有时被调用。这是否可以避免不必要的资源分配?
  • 好吧,在这种情况下,一个简单的工厂就是要走的路。只需忽略延迟加载并创建一个将在运行时构建服务实例的工厂。感谢工厂,您只有在真正需要时才实例化您的服务。
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 2011-01-09
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2017-09-14
相关资源
最近更新 更多