springboot启动原理_「面试」聊聊SpringBoot启动过程的原理吧,你是否清楚

主要了解和学习下SpringBoot启动的大致原理是如何,以及知道几个注解的真正含义和用途是什么,SpringBoot就可以以SpringApplication.run(Bootstrap.class);这样的一句代码作为启动的入口。

e9d6a9f60ab21dc3d72da8690a517f93.png

1、SpringApplication 对象实例化

SpringApplication 文件

public static ConfigurableApplicationContext run(Object[] sources, String[] args) { // 传递的source其实就是类Bootstrap return new SpringApplication(sources).run(args); // 实例化一个SpringApplication对象执行run方法}

实例化的时候又会执行initialize 方法

private void initialize(Object[] sources) { // 这个source依旧是上文说的Bootstrap.class 类 if (sources != null && sources.length > 0) { this.sources.addAll(Arrays.asList(sources)); // 添加到source资源列表里面去 } this.webEnvironment = deduceWebEnvironment(); // 设置其是否为web环境 setInitializers((Collection) getSpringFactoriesInstances( ApplicationContextInitializer.class)); setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); // 拆分为两步,一步是getSpringFactoriesInstances,再者就是set操作 // set操作很简单,就是设置当前对象的初始化对象以及监听器 this.mainApplicationClass = deduceMainApplicationClass(); // 通过堆栈信息,推断 main方法的类对象为当前的主程序类}private static final String[] WEB_ENVIRONMENT_CLASSES = { "javax.servlet.Servlet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值