SpringBoot启动原理是Java面试经常被问的内容,下面我就来详解SpringBoot启动原理@mikechen
一:SpringBoot启动入口
我们开发任何一个Spring Boot项目,都会用到如下的启动类。
如下图所示:
@SpringBootApplication 是 Spring Boot 应用程序的入口注解,它包含了多个注解的组合,包括: @Configuration、@EnableAutoConfiguration 和 @ComponentScan。
如下图所示:
1.@Configuration注解
@Configuration 注解表示这个类是一个配置类,它定义了一组 Spring Bean 的配置信息,可以使用 @Bean 注解来标注一个方法,将该方法返回的对象添加到 Spring 容器中。
2.@EnableAutoConfiguration注解
@EnableAutoConfiguration 注解表示开启自动配置功能,它可以根据当前项目所依赖的 jar 包和默认配置规则,自动完成 Spring Bean 的加载和配置。
3.@ComponentScan注解
@ComponentScan 注解表示启用组件扫描,可以自动扫描指定包路径下的所有组件,包括 @Controller、@Service、@Repository、@Component 等,并将其添加到 Spring 容器中。
综上所述,@SpringBootApplication 等价于 @Configuration + @EnableAutoConfiguration + @ComponentScan。
它将 Spring Boot 应用程序的配置、自动装配和组件扫描整合在了一起,大大简化了应用程序的开发和部署。
二:Spring Boot 应用启动
Spring Boot 应用的启动入口是 SpringApplication 类,它通过 SpringApplication.run() 方法启动 Spring Boot 应用。
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
该方法会执行以下操作,如下图所示:
- 创建
SpringApplication
对象,读取默认配置。 - 分析命令行参数,解析配置文件,覆盖默认配置。
- 创建
ApplicationContext
对象,并将其初始化。 - 加载所有标注有
@Component
、@Service
、@Repository
、@Controller
等注解的类,并将它们添加到ApplicationContext
中。 - 启动 Spring Boot 应用程序的生命周期,执行应用程序的业务逻辑。
- 应用程序关闭时,销毁所有的 Spring Bean 和资源。
SpringApplication.run 方法完成了应用程序的启动和初始化工作,并将应用程序的控制权交给开发者,使得开发者可以专注于业务逻辑的实现。
以上就是SpringBoot启动原理详解,更多内容请查看:SpringBoot框架(万字图文全面详解)
陈睿mikechen
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》