springboot启动流程

首先启动类使用了@SpringBootApplication注解,这个复合注解包括了@EnableAutoConfiguration、@SpringBootConfiguration和@ComponentScan三个注解,@SpringBootConfiguration是标注当前类是一个配置类并注入到IOC容器中,而@ComponentScan是扫描指定路径下带有特定注解的类到IOC容器中。最为重要的是@EnableAutoConfiguration,它能通过ImportSelector选择器将所有带有@Confiquration自动导入到容器里注解完成后,通过运行SpringApplication的run方法完成服务构建、环境准备、容器创建、填充容器四项工作。
1.服务构建需要在SpringApplication的构造器中完成

1.加载资源加载器、主方法类到内存中,
2.判定web应用类型是否存在并默认为servlet,    
3确定web服务器后就要加载初始化类了,这里是通过META-NFO/spring.factories来读取启动注册初始化器、应用上下文初始化器、应用    监听器三类配置,当然,这里也可以对自定义三类配置,通过运行时栈判断main方法所在的类是否为主启动类

2.调用run方法进入环境准备阶段,主要是对容器和组件做一些前置操作。

1.先创建一个启动上下文。并逐一调用刚刚加载的启动注册初始化器的一个初始化方法 
2.接下来设置awt.headLess=true表示缺少显示器、键盘等设备也可正常启动 
3.启动运行监听器,同时发布启动事件,获取并加载spring.factories中的事件发布运行监听器,并且会将应用监听器也一并引入,以后想要在启动流程过程中加入自定义逻辑就只需要监听这些事件
4. 通过prepareEnvironment方法组装启动参数,根据不同的web构造不同的环境。构造完毕后会加载环境变量、jvm系统属性到属性集合中,后期无需加载。此时可设置启动参数并添加configuration.properties到属性集合中。接下来会发布环境准备完成的事件,一些监听器收到信号会做相应处理。
5. 可做忽略元数据加载、打印banner的操作。

3.环境准备好以后,就可以创建容器了。

 1.首先创建注解配置servlet容器,具体行为是创建beanfactory.用来解析一些注解的后置处理器和其他属性对象 
 2调用prepareContext方法对容器中的属性进行初始化

4.容器创建完毕后,就会对容器做初始化操作。

1.创建系统自带的Bean和用户自定义Bean并装配到容器里,通过启动tomcat和经历Bean的生命周期就可以使用一个完整的Bean2.发布启动事件完成的同时,会回调自定义Runner接口来处理定制化需求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot启动流程可以分为以下几个步骤: 1. 确定应用程序类型。在启动SpringBoot时,首先需要确定应用程序的类型。这可以通过设置启动类的注解来实现,比如使用@SpringBootApplication注解。 2. 创建SpringBoot应用程序上下文。在确定应用程序类型后,SpringBoot会创建一个应用程序上下文(ApplicationContext)对象。这个上下文对象是整个应用程序的核心,包含了所有的配置信息和Bean定义。 3. 加载配置文件。SpringBoot会自动加载并解析应用程序的配置文件,包括application.properties或application.yml等。这些配置文件可以用来配置应用程序的各种属性,如数据库连接、端口号等。 4. 扫描和注册Bean。SpringBoot会扫描应用程序中的所有类,并将符合条件的类注册为Bean。这可以通过@ComponentScan注解来实现,它会扫描指定包及其子包中的所有类。 5. 执行Bean的初始化和依赖注入。在注册Bean后,SpringBoot会执行Bean的初始化操作,并将其依赖的其他Bean注入到其中。这可以通过使用@Autowired注解来实现。 6. 启动应用程序。在完成上述步骤后,SpringBoot会启动应用程序。这将导致应用程序开始监听指定的端口,并处理来自客户端的请求。 总而言之,SpringBoot启动流程包括确定应用程序类型、创建应用程序上下文、加载配置文件、扫描和注册Bean、执行Bean的初始化和依赖注入,最后启动应用程序。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [9千字长文带你了解SpringBoot启动过程--史上最详细 SpringBoot启动流程-图文并茂](https://blog.csdn.net/weixin_44947701/article/details/124055713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值