我有一个Spring Boot应用程序。我添加了很多依赖项(不幸的是,看起来我需要所有这些依赖项),启动时间大大增加。仅运行SpringApplication.run(source, args)
就需要10秒钟。
尽管与我们通常的情况相比可能并不算多,但我对它花费那么长时间感到不满,主要是因为它破坏了开发流程。目前该应用程序本身相当小,因此我认为大部分时间都与添加的依赖项有关,而不是应用程序类本身。
我认为问题出在类路径扫描上,但我不确定如何:
- 确认是否是该问题(即如何“调试”Spring Boot)
- 如果真的是原因,我该如何限制它,以使它变快?例如,如果我知道某个依赖项或包不包含Spring应该扫描的任何内容,是否有一种方式可以限制它?
我认为增强Spring以在启动期间具有并行bean初始化将加快速度,但该增强请求自2011年以来一直处于打开状态,没有任何进展。我在Spring Boot本身中看到了一些其他努力,例如研究Tomcat JarScanning速度改进,但这是特定于Tomcat的,并且已经被放弃。
这篇文章:
虽然针对集成测试,但建议使用lazy-init=true
,但我不知道如何在Java配置中将其应用于所有bean - 有什么提示吗?
欢迎任何(其他)建议。
@ComponentScan
定义了其他包,那么它们也会被扫描。另一件事是确保你没有启用调试或跟踪日志记录,因为通常日志记录很慢,非常慢。 - M. Deinum