spring boot启动速度优化

原创
2021/04/13 22:17
阅读数 999
AI总结

今天介绍下,关于如何提高boot项目的启动速度,步骤如下:

将日志级别设置为debug,启动后重点关注以下输出日志内容

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

然后复制 Positive matches 里面所有出现的自动配置对象,删除启动类中的SpringBootApplication注解,改为手动配置,如下:

@Configuration
@Import({
xxAutoConfiguration.class,
})
public class App {

以上步骤操作后,是不是觉得没啥优化空间了,那你就大错特错了,接下来我们可以分析下boot中有多少实现xxRunner接口的类,如果发现该类运行比较耗时,这时候我们就可以下手去优化它,具体分析步骤如下:
  1. 通过ApplicationContext#getBean(XxRunner.class),就可以知道当前项目中有多少Runner
  2. 然后监听每个Runner运行过程需要消耗的时长,当然如果通过第一步获取到的Runner很少可以忽略以下步骤
  3. 将所有的Runner子类的run方法由原来的同步改为异步,这对程序正常运行基本上不会有影响,如果确实需要同步执行的,可以忽略这些特需类

具体如何实现,此处只提供思路,不提供代码,哈哈,很简单利用aop去拦截XxRunner#run方法,然后使用线程池去执行run方法即可

经过以上操作基本上完成大部分优化工作,接下还有没有优化空间,当然有,具体如下:
  1. 排除项目用多余的依赖jar,具体如何排除可以通过idea中的maven-helper插件去分析jar依赖关系
  2. 如果项目用到swagger,在生产环境打包时去除swagger所有依赖,因为生产环境根本用不上,swagger生成api接口时需要扫描所有的controller,这是很费时的过程
  3. 接下来就是整个性能优化,此处就不做说明,如内置tomcat调优或者直接换成undertow,jvm调优等自行百度
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部