springboot17:原理解析
admin
2024-01-28 23:48:51
0

1.starter原理解析

starter自动配置

  • 场景启动器(只说明当前场景的依赖),依赖中有一个某个环境的自动配置包(autoconfigure)
  • 自动配置包下能自动配置
    • 声明一个自动配置类
      @configuration 声明为一个自动配置类
      @EnableConfigurationProperties(放入配置类.class)
      开启属性文件绑定功能
      默认组件放入容器中
      • 内部@bean 方法类
    • 配置一个方法类(需要用配置类配置其内部属性)
      • 内部@autowired 配置类(获取配置类的属性)
    • 配置一个配置类(绑定配置文件中的“atguigu.hello的前缀”)
  • 别的项目引入场景启动器
    • 项目中默认读取类路径下META-INF/spring.factories中EnableAutoConfiguration的值即为项目启动后加载哪些自动配置类,使得项目启动加载指定的自动配置类
  • 只需要直接使用前面的方法类,可以直接调用类中的方法
  • 并且可以写一个配置属性 atguigu.hello.xxx=然后初始化类中的属性
  • 此时方法调用完整…

2.springboot原理

  • spring原理 springmvc原理 自动配置原理 springboot原理
  • springboot启动原理
  1. 创建springapplication
    1. 保存一些信息
    2. 判定当前应用类型(Servlet)
    3. 初始启动引导器没找到
    4. 去每个jar包的配置文件中的spring.factories找 ApplicationContextInitializer(初始化器找到了7个)
    5. 去每个jar包的配置文件中的spring.factories找ApplicationListener (应用监听器找到了9个)
    6. 保存这些组件到springapplication中
  2. 运行springapplication
    1. StopWach记录应用的启动时间
    2. 创建引导上下文环境:获取到所有之前的初始化启动引导器来完成对引导上下文的环境设置
    3. 让当前应用进入headless模式,自立更生模式
    4. 获取所有的runlistener运行监听器:获取的步骤是去spring.factories找。遍历所有获取到的runlistener,调用所有的starting方法(通知所有感兴趣系统启动过程的人,项目正在statring)
    5. 保存命令行参数
    6. 准备环境信息:返回或创建一个基础环境信息,配置环境信息,读取所有配置属性值,通知所有监听器当前环境准备完成,
    7. 创建IOC容器(createApplicationContext()),根据项目类型(Servlet)创建一个IOC容器 AnnotationConfigServletWebServerApplicationContext
    8. 准备IOC容器的基本信息
      1. 保存环境信息,IOC容器创建后的后置处理过程(准备类型转换器…)
      2. 应用初始化器,遍历所有的ApplicationContextInitializer调用initialize方法,来对IOC容器进行初始化的扩展工作,遍历所有的监听Listener,
      3. 所有的监听器调用contextLoaded
    9. 刷新IOC容器
      1. 创建容器中的所有组件(spring组件)
    10. 刷新完成容器后,所有监听器调用started方法
    11. 调用所有的runners:获取容器中的ApplicationRunner和另外一个Runner,合并所有Runner,并且按照order进行排序,遍历所有的runner调用run方法
    12. 如果以上有异常,监听器调用failed方法
    13. 没有异常,调用所有监听器的Listener的running方法
    14. running如果有问题,继续通知监听器listener的failed方法
    15. 返回IOC容器

3.自定义

  • ApplicationContextInializer
  • ApplicationListner
  • SpringApplicationRunListner
  • ApplivcationRunner@Component
  • CommadLineRunner@Component
  • 可以全部自定义并且继承类然后重写方法,判断什么时候执行
  • 注意除了标注解组件都是在所有jar包中的所有META-INF/spring.factories下配置的

相关内容

热门资讯

关于万历年间的一些民间故事? 关于万历年间的一些民间故事?万历年间的一天,广宁一个叫孙林的药材商在大街上闲逛,一个看相的一看到他,...
随身翻译机选择什么品牌好? 随身翻译机选择什么品牌好?1、随身翻译机怎么选购?2、随身翻译机随身翻译机到哪里买?3、随身翻译机里...
求“困知勉行”的解释 求“困知勉行”的解释kùn zhī miǎn xíng困知:遇困而求知;勉行:尽力实行。在不断克服困...
我该怎么整容了? 我该怎么整容了?我觉得你不用整容,你长得挺好的,男人结结实实就行,皮肤不太好,有豆豆,不要吃辛辣食物...
为什么叫云时代 为什么叫云时代就是一切资源都在云上,云指终端
综合来说,空客和波音哪家公司的... 综合来说,空客和波音哪家公司的飞机更好?波音比空客更好些。根据规模比较波音排名64,空客排名105。...
哪个季节适合出去旅游? 哪个季节适合出去旅游?在各种季节游玩中,人们讲的最多的是春游。因为人最喜欢的是新生的物品,而春天是万...
股市,情绪指标什么意思 股市,情绪指标什么意思市场情绪指标,是反应市场情绪的一种技术指标,可以反应出市场的情绪是否过热,还是...
双重身份用什么数字表示? 双重身份用什么数字表示?有一种说法叫斜杠青年。俺都是用负数表示负数表示多数是用X表示吗,我猜的2吧,...
谁能介绍一些关于爱情的书籍? 谁能介绍一些关于爱情的书籍?外国的有文学价值的书有些难啃,亚洲岩井俊二的情书,一定要看书,不是电影,...
六岁的小女孩上幸福来敲门 六岁的小女孩上幸福来敲门六岁的小女孩上幸福来敲门节目的需要吧挺有意思的看到还是有小孩子上的
马和鹿是什么成语 马和鹿是什么成语指鹿为马zhǐ lù wéi mǎ[释义] 把鹿说成马。比喻故意颠倒黑白。[语出]...
有没有主角穿越成狐仙,玉藻前,... 有没有主角穿越成狐仙,玉藻前,金毛白面九尾狐的综漫小说,同人小说?小鸡漫画上有一个,名字应该是《狐妖...
2-8人去张家界五日四晚跟团游... 最近我带着几位朋友计划了一次张家界五日四晚的旅行,人数在2到8人之间。说实话,一开始还担心价格太高或...
螳螂电视剧剧情介绍 螳螂电视剧剧情介绍 1948年冬,我军准备渡江作战,解放南京。国民党政府准备将一批珍贵国宝转运到台湾...
重庆旅游五日游多少钱,重庆旅游... 在繁忙的都市生活中,我总是渴望能带着孩子逃离喧嚣,去一个充满新奇与乐趣的地方,享受一段难忘的亲子时光...
鎏金观景台倒映江心·长桥衔日绘... 南京鱼嘴湿地公园以其独特的地理位置和丰富的湿地生态,融合了自然观赏、生态保护教育、休闲娱乐与亲子活动...
平时出行意外险该选哪个?综合意... 平时出行意外险该选哪个?综合意外险有什么好处?平时出行一定要注意安全,保险的配备也是十分必要。一般来...
丽江文旅推介走进成都,邀您体验... 当苏超球迷嗨到冒烟,兵马俑人潮涌动,重庆火锅沸腾至凌晨3点,成都世运会即将燃爆全城之际,云南丽江市却...
直男眼里的《山河令》逗乐网友,... 直男眼里的《山河令》逗乐网友,直男眼里的这部剧是怎样的?在直男的眼中,这就是知己的感觉,这就是真的兄...