springboot是如何跑起来的01

1springboot根据类型进行deduce判断,类型是写死的servlet或者reactive

细节 :根据反射拿classname,用指定的classloader从classpath 依赖的Jar包中加载类

扫描各个jar包下的meta-inf下面的spring.factorys

2setInitializers  

在spring容器初始化的时候  扫描所有Jar包的spring.factorires得到propertys的配置然后暂存到map里

这步很重要,跑完后会得到一堆上下文类,假如第三方也想假如springboot比如dubbo,那么dubbo要在initializers里加入一些动作

3setListeners

容器发生事件的时候被回调

扫描到各个框架实现的listener

4deduceMainApplicationClass

遍历所有类,拿到包含Main的类

5创建上下文  

这块感觉猝不及防的就创建上下文了,而且是调用接口,接口里面用switch case判断来创建不同的对象


AnnotationConfigServletWebServerApplicationContext这个对象就创建出来了。这块是springboot启动前做的准备操作

6 prepareContext里面执行applyInitializers,这个initializers就是之前第2步得到的initalizers

另外有个思路,因为applicationContextInitializer是个接口,那么我们也可以自己写一个类实现这个接口,然后启动就会调用到。

很多第三方框架也是在annotionConfigApplicationContext里面加入  beanpostfactoryPostProcessor就是bean后处理器,然后系统启动就可以加载到第三方框架了。

只要实现ApplicationContextInitializer接口的类,在执行initializer.initialize(context);的时候都会调用到,要么是bean后处理器要么是监听器,在某个时刻触发

比如applicatonListener 自动装配 webserver相关jetty

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值