如何改善Spring Boot启动时间

时间:2018-02-12 12:56:46

标签: spring-boot

是否可以改善Spring Boot的启动时间?

以下是空CommandLineRunner项目的示例。启动需要914毫秒。

@SpringBootApplication
public class Main implements CommandLineRunner {

    private static long t1;

    public static void main(String[] args) {
        t1 = System.currentTimeMillis();
        SpringApplication.run(Main.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println(System.currentTimeMillis() - t1);    
    }

}

2 个答案:

答案 0 :(得分:1)

您可以使用 Spring Framework 5.0 组件索引功能作为类路径扫描的替代方法。以改善启动启动时间。

已添加此支持以快速修改类路径扫描程序中的候选组件识别步骤。

应用程序构建任务可以为当前项目定义自己的 META-INF / spring.components 文件。

在编译时,会对内部模型进行内省,并标记JPA实体和Spring组件。

从索引中读取实体而不是扫描类路径对于少于200个类的小项目没有显着差异。

然而,

  

它对大型项目产生重大影响。加载组件   指数很便宜。因此,索引的启动时间仍然存在   随着班级数量的增加而不变。

您可以在JIRA

找到更多详细信息

更新其他选项

Spring Boot 2.2中的延迟初始化功能 Spring Boot 2.2可以轻松启用延迟初始化。需要将spring.main.lazy-initialization设置为 true 以启用延迟初始化。

注意 - 懒惰的内化有一些优点和缺点,请谨慎使用。有关详细信息,请查看This

答案 1 :(得分:1)

是的,这是可能的,但这取决于你很乐意丢失的功能。例如,您可以将@SpringBootApplication替换为@SpringBootConfiguration@ComponentScan,这将关闭自动配置。您将在启动时获得几毫秒的时间,但现在必须自己配置,或者手动导入满足应用程序需求的自动配置类。