SpringBoot 启动流程简介
SpringBoot的启动
@SpringBootApplication
public class SpringbootLectureApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootLectureApplication.class, args);
}
}
在调用run()方法前
- 调用run()方法前,需要先实例化 SpringApplication
- 会创建SpringFactoriesInstances
- 就是实例化一些必须组件以及可能用的到的组件,也就是自动配置。
- 主要是通过spring.factories文件定位。该文件有列出需要实例化的组件。
- 其中实例化相关组件时涉及到一个重要类,SpringFactoriesLoader。
- 它是从“META-INF/spring.factories”文件加载并实例化给定类型的工厂,这些文件可能存在于类路径中的多个 JAR 文件中。 spring.factories 文件必须采用 Properties 格式,其中key是接口或抽象类的完全限定名称,value是逗号分隔的实现类名称列表(list)。
- 实例化就少不了类加载,这里Spring 显式获取类记载器,是因为这些组件暂时没有被使用,所以不会被jvm自带的三个类加载器加载。但是 spring.factories提供了类的全限定名,那么类加载器就可以直接加载它们,而不是等到使用时再去加载它们。
调用run()方法
- 实例化SpringApplication后就是调用run()方法了。
- 大致了解其流程。
小结
- Spring Boot 的设计理念是简化配置和快速启动,而传统 Spring 则需要更多手动配置和设置。Spring Boot 通过自动配置、内嵌服务器和starter依赖等功能,让开发者可以更快地启动和部署应用程序,而传统 Spring 提供了更细粒度的控制和配置选项,但可能需要更多的设置工作。
转载自:https://juejin.cn/post/7373571989725003817