当前位置: 首页 > 知识库问答 >
问题:

加快spring boot启动时间

闻人梓
2023-03-14

我有spring boot的申请。我添加了很多依赖项(不幸的是,看起来我需要所有的依赖项),并且启动时间增加了很多。仅仅执行springapplication.run(source,args)就需要10秒。

虽然与“习惯”相比,这可能不算多,但我不高兴它需要这么多,主要是因为它破坏了开发流程。应用程序本身在这一点上是相当小的,所以我假设大部分时间是与添加的依赖相关的,而不是应用程序类本身。

我假设问题是类路径扫描,但我不确定如何:

  • 确认是问题所在(即如何“调试”spring boot)
  • 如果它真的是原因,我如何限制它,所以它变得更快?例如,如果我知道某些依赖项或包不包含任何spring应该扫描的内容,有没有办法限制它?

我假设在启动时增强spring使其具有并行bean初始化功能会加快速度,但该增强请求自2011年以来一直开放,没有任何进展。我在spring boot自己也看到了一些其他的努力,比如调查Tomcat JarScanning的速度改进,但是这是Tomcat特有的,已经被放弃了。

本文:

  • http://www.nurkiewicz.com/2010/12/queating-up-spring-integration-tests.html

虽然针对集成测试,但建议使用lazy-init=true,但是我不知道如何使用Java配置将其应用到spring boot的所有bean中-这里有任何指针吗?

欢迎任何(其他)建议。

共有1个答案

任伟
2023-03-14

spring boot做了很多可能不需要的自动配置。因此,您可能希望缩小范围,只需要自动配置,为您的应用程序。要查看包含的自动配置的完整列表,只需在调试模式下运行org.springframework.boot.autocigure的日志记录(application.properties中的logging.level.org.springframework.boot.autocigure=DEBUG)。另一个选项是使用--debug选项运行spring boot应用程序:Java-jar myproject-0.0.1-snapshot.jar--debug

输出中会有如下内容:

=========================
AUTO-CONFIGURATION REPORT
=========================

检查此列表并仅包含您需要的自动配置:

@Configuration
@Import({
        DispatcherServletAutoConfiguration.class,
        EmbeddedServletContainerAutoConfiguration.class,
        ErrorMvcAutoConfiguration.class,
        HttpEncodingAutoConfiguration.class,
        HttpMessageConvertersAutoConfiguration.class,
        JacksonAutoConfiguration.class,
        ServerPropertiesAutoConfiguration.class,
        PropertyPlaceholderAutoConfiguration.class,
        ThymeleafAutoConfiguration.class,
        WebMvcAutoConfiguration.class,
        WebSocketAutoConfiguration.class,
})
public class SampleWebUiApplication {

已从此日志中复制代码。

 类似资料:
  • 现有一个springboot项目,通过扫描二维码查询信息,比如一棵树,扫描二维码后可以看到他相关的信息。但这个项目不止有树类型,还有道路,某个物品。所以将项目分模块开发,核心模块作为一个jar包,复制提供基础服务如数据导入导出。各类型构建成单独的jar。部署时需要那种类型就加载对应的jar。这样做是为了满足不同客户需求。 尝试: java -Xbootclasspath/a:file:./libs

  • Swoole的绝大部分功能只能用于cli命令行环境,请首先准备好Linux Shell环境。可使用vim、emacs、phpstorm或其他编辑器编写代码,并在命令行中通过下列指令执行程序。 php /path/to/your_file.php 成功执行Swoole服务器程序后,如果你的代码中没有任何echo语句,屏幕不会有任何输出,但实际上底层已经在监听网络端口,等待客户端发起连接。可使用相应的

  • 我正在用Hubot框架开发一个应用程序,使用Heroku。我在Heroku上设置了一些配置变量,当我部署代码时,我的引用可以正常工作。

  • Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展 进行加载。 如果不想使用 Spring 配置,可以通过 API 的方式 进行调用。 服务提供者 完整安装步骤,请参见:示例提供者安装 定义服务接口 DemoService.java 1: package

  • 我正在使用spring-cloud-sleuth为http请求、rabbitMQ消息和sheduled事件的日志添加相关id。添加依赖项后,应用程序的启动时间增加了50%。所有其他配置属性,如spring.sleuth.async.enabled和spring.sleuth.grpc.enabled的默认值为true。如果我想减少我的应用程序启动时间,我需要在我的应用程序属性文件中将所有这些都过期

  • SOFABoot 提供了模块并行加载以及 Spring Bean 异步初始化能力,用于加快应用启动速度。模块并行加载参考相应文档,下面介绍如何使用 SOFABoot 异步初始化 Spring Bean 能力来提高应用启动速度。 引入依赖 SOFABoot 在 v2.6.0 开始提供异步初始化 Spring Bean 能力,引入如下 Starter 即可: <dependency> <gro