一、背景 / 问题
很多SpringBoot项目随着版本迭代,依赖不断增加,启动耗时越来越长。新项目启动2~3秒,后期慢慢涨到8秒甚至十几秒。本地开发频繁重启调试非常耗时;线上发布扩容场景,过长启动时间会拉长发布窗口,影响服务可用性。本文分析SpringBoot启动慢的各类原因,提供可直接落地的优化方案。
二、环境与前提
SpringBoot 2.x / 3.x版本都适用。需要熟悉SpringBoot自动装配、Bean生命周期、Hikari连接池基础配置。下面所有配置都可以在application.yml或者application.properties中配置。
三、实操步骤
1. 开启Bean懒加载
默认SpringBoot启动会实例化所有Bean,开启懒加载后,Bean在第一次被使用时才创建,大幅缩短冷启动时间。
spring: main: lazy-initialization: true2. 排除无用自动配置类
自动装配会加载大量未使用组件的配置,在启动类注解中exclude排除不需要的自动配置。
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, RedisAutoConfiguration.class }) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }3. 数据库连接池懒加载
默认启动时会预先创建数据库连接,改成初始连接数为0,延迟到第一次访问数据库才创建连接。
spring.datasource.hikari.initial-size=0 spring.datasource.hikari.minimum-idle=04. 清理冗余Maven依赖
使用命令mvn dependency:analyze分析未使用依赖,清理pom.xml中废弃starter和工具包,减少类加载开销。
四、坑点与注意事项
- 开启全局懒加载后,Bean初始化异常会从启动阶段推迟到第一次调用接口时,上线前充分测试。
- 排除自动配置类要核对项目依赖,不能把正在使用的配置排除。
- 懒加载连接池会让第一次数据库请求变慢,属于正常现象。
五、总结
SpringBoot启动慢大多是默认加载策略带来的问题,通过懒加载、精简配置、清理依赖等方式,低成本即可显著降低项目启动耗时。