我继承了一个 SpringBoot 应用程序,该应用程序最初使用 Spring boot 1.3(嵌入式 Tomcat)运行,使用该java -jar project.war
命令启动应用程序。
自从我们升级到 Spring boot 1.4 后,我们注意到与在 IDE(Eclipse 和 IntelliJ)中运行应用程序相比,它的启动速度要慢得多,搜索时的延迟也更长。
一个很好的例子是搜索“SMITH”。当我们在 IDE 中运行应用程序时,搜索大约需要 5-6 秒。使用完全相同的代码库、嵌入式服务器配置和主机——在“SMITH”上搜索——当开始使用时java -jar project.war
,需要 14 秒。
我们已经向上、向下和向后分析了应用程序,但仍然无法弄清楚为什么它在我们的 IDE 中运行得这么快。
要解决上述问题,我们必须执行以下操作:
- 将战争爆发到临时目录
- cd 到 WEB-INF 目录
- 跑
java -classpath "lib\:classes\:lib\*.jar" my.package.Main
为什么这两个命令行功能有如此大的差异?为 Java 提供类路径真的能大大提高性能吗?
==================================================== ======================= 编辑:我已经向Spring提交了https://github.com/spring-projects/spring-boot/issues/8046,这基本上是从这里剪切和粘贴
编辑 2:如果您遇到此问题并且可以共享您的代码,请使用 Spring 这样做(使用上面的链接);我公司的环境被锁定。