使Spring引导应用程序更快启动

问题描述 投票:0回答:2

spring-boot中有两个IOC容器:BeanFactoryApplicationContext

根据我的理解,ApplicationContext支持对bean的急切初始化,其中BeanFactory懒惰地进行初始化。

问题陈述:在我的Spring启动应用程序中,我想使用bean的惰性初始化来使应用程序启动更快。任何人都可以提出实现相同目标的解决方案吗?

java spring-boot applicationcontext lazy-initialization
2个回答
0
投票

关于Aniket Sahrawat的解释:spring.main.lazy-initialization=true

延迟初始化的效果

在整个应用程序中启用延迟初始化可能会产生正面和负面影响。

让我们讨论其中的一些,正如新功能的正式公告中所述:

  1. 延迟初始化可能会减少当应用程序正在启动–因此,我们可以缩短启动时间的应用程序
  2. 由于在需要它们之前都不创建任何Bean,因此我们可以掩盖问题,让它们在运行时而不是启动时运行
  3. 问题可能包括内存不足错误,配置错误或发现类定义的错误
  4. 此外,当我们处于网络环境中时,会触发需求将增加HTTP请求的延迟– bean创建只会影响第一个请求,但这可能会有一个对负载平衡和自动扩展产生负面影响。

参考:https://www.baeldung.com/spring-boot-lazy-initialization#effects


0
投票

使用延迟初始化属性:

spring.main.lazy-initialization=true

仅在Spring Boot 2.2及更高版本中才支持以上属性。此属性将确保在需要依赖项之前不会注入依赖项,可以在执行热重启时看到时序上的主要差异。

FYIApplicationContext是a BeanFactory,都支持惰性初始化。这实际上取决于何时调用BeanFactory#getBeanProvider

© www.soinside.com 2019 - 2024. All rights reserved.