是否可以改善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);
}
}
答案 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
,这将关闭自动配置。您将在启动时获得几毫秒的时间,但现在必须自己配置,或者手动导入满足应用程序需求的自动配置类。