SpringBoot启动速度慢的原因是什么

发布时间:2023-05-05 10:43:44 作者:zzz
来源:亿速云 阅读:100

这篇文章主要介绍“SpringBoot启动速度慢的原因是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot启动速度慢的原因是什么”文章能帮助大家解决问题。

SpringBoot启动速度慢的原因

现在spring boot的架构可以说是非常流行,不会你都不好意思说你是做java的。可是它火归火,也有一些小问题需要咱们去注意。

如果是单体项目,并且在启动速度方面没有任何要求,那么请忽略。

下面进入主题,在什么情况下spring boot的项目启动会变慢呢

前提条件

启动项目的机器硬件配置不能拖后腿,否则你说项目启动慢,项目还觉得机器不行呢…

比如网络,内存大小,CPU核心数等,不要求太高,至少也要够用吧

抛开各种人为因素,例如各种连接时间较长,其他组件启动较慢导致等待…

原因一

项目中使用的无用配置太多。例如在一个最简单的web中,你还加入了其他各种maven配置,并且将他们配置到项目中(只是比较夸张的例子,这些配置加入都不用),然后项目本身也不懂,既然你配置了,那就加载呗。

一个花0.1秒,10个就1秒,100个就10秒了…以此类推,这一点就是最容易想明白的地方了。

原因二

spring boot的自动配置。自动配置是spring boot的一个特色,但是也是它启动慢的一个弊病。

没办法,通常好用功能全的东西,总会在一些地方上有缺陷。

上面说到无用的配置多,这里要说的就是spring boot它自己装配的东西太多。

你可以看到在spring boot的相关jar包里,都存放着spring.factories的文件,进去一看,大部分都是写了很多的类,它是实现spring boot自动装配的核心之一。

但是你仔细观察会发现,其实有很多类,你可能完全不用。

但有什么办法呢,不管你用不用,至少它都会给你检查一遍,这不也是花时间的地方吗?

原因三

项目精简程度不够。现在比较流行微服务的概念,我认为它的概念核心含义即为精简,单一,并且多数需要强调启动速度的地方也多是出自微服务的项目中。

一个微服务项目中,最好是在10秒以内能够启动完毕。但是多数是做不到的,原因在于项目拆分的还不够细。

你说一个接口启动快,还是10个快,或是更多,答案很明显。很多项目做到了大而全,所谓大而全就是功能很多,配置很齐全,各种可以扩展配置等,全面的不行不行的,但这意味着什么,你的配置多,有用没用先不管,至少需要编译和加载的类文件都会多出很多来,你说要这样的项目能启动快,怎么能启动快呢?

解决方法

如何提高SpringBoot应用的启动速度

1、减少@ComponentScan @SpringBootApplication 扫描类时候的范围

2、关闭 Spring Boot 的 JMX 监控,设置 spring.jmx.enabled=false

3、设置 JVM 参数 -noverify ,不对类进行验证

4、对非必要启动时加载的 Bean ,延迟加载

5、使用 Spring Boot 的全局懒加载

6、AOP 切面尽量不使用注解方式,这会导致启动时扫描全部方法

7、关闭 endpoint 的一些监控功能

8、排除项目多余的依赖 jar

9、swagger 扫描接口时,指定只扫描某个路径下的类

10、Feign 客户端接口的扫描缩小包扫描范围

关于“SpringBoot启动速度慢的原因是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

推荐阅读:
  1. SpringBoot+Redis怎么实现防止恶意刷新与暴力请求接口
  2. springboot如何实现指定mybatis中mapper文件扫描路径

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot

上一篇:SpringBoot项目解决跨域的方案有哪些

下一篇:Node.js中同步和异步编程的区别及使用方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》