SpringBoot核心原理以及工作流程

这篇具有很好参考价值的文章主要介绍了SpringBoot核心原理以及工作流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. SpringBoot 概述

SpringBoot 是Spring的一套快速配置脚手架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化xml配置,全部采用注解形式,内嵌web应用容器(如:jetty和Tomcat),最终以java应用程序进行执行

2. SpringBoot的启动类入口

SpringBoot核心原理以及工作流程

2.1 @SpringBootApplication是一个复合注解

@Target(ElementType.TYPE) // 注解的适用范围,其中TYPE用于描述类、接口(包括包注解类型)或enum声明
@Retention(RetentionPolicy.RUNTIME) // 注解的生命周期,保留到class文件中(三个生命周期)
@Documented // 表明这个注解应该被javadoc记录
@Inherited // 子类可以继承该注解
@SpringBootConfiguration // 继承了Configuration,表示当前是注解类
@EnableAutoConfiguration // 开启springboot的注解功能,springboot的四大神器之一,其借助@import的帮助
@ComponentScan(excludeFilters = { // 扫描路径设置
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
} 

SpringBoot核心原理以及工作流程

3. @EnableAutoConfiguration

3.1 @AutoConfigurationPackge:自动装配包

@AutoConfigurationPackge与@ComponentScan一样,也是将主配置类所在的包以及子包里面的组件扫描到IOC容器中,但是@AutoConfigurationPackge扫描@Enitity,@MapperScan等第三方依赖的注解,而@ComponentScan只扫描@Controller,@Service这些常见注解

3.2 @Import(AutoConfigurationPackages.Registrar.class)

通过Import给Spring容器中导入了以Registrar注册器组件

3.3 @Import(AuroConfigurationImportSelector.class)

通过Import导入第三方提供的Bean的配置类:AutoConfigurationImportSelector:给容器导入组件该类中有selectImport方法,调用了getAutoConfigurationEntry()

SpringBoot核心原理以及工作流程

 其又调用了getCandidateConfigurations()

SpringBoot核心原理以及工作流程 

 getCandidateConfigurations()中SpringFactoriesLoader.loadFactroyNames()方法

SpringBoot核心原理以及工作流程 

SpringFactoriesLoader.loadFactroyNames()中传入参数EnableAutoConfiguration.class

SpringBoot核心原理以及工作流程 

 3.4 SpringFactoriesLoader概述

SpringFactoriesLoader属于Spring框架私有的一种扩展方案,其主要功能就是从指定的配置文件META-INF/spring.factories加载配置,加载工厂类

SpringFactoriesLoader为Spring工厂加载器,该对象提供了loadFactoryNames方法,入参为factoryClass和classloader即需要传入的工厂类名称和对应的类加载器,方法会根据指定的classLoader,加载该类加载器搜索路径下指定文件,即spring,factories文件

 扫描所有jar包类路径下的META-INF/spring,factories文件,将扫描到的这些文件包装成properties对象,从properties中获取到EnbaleAutoConfiguration.class类名对应的值,将这些值添加到容器中,用这些类做自动装配功能

SpringBoot核心原理以及工作流程 

 3.5 自动装配过程

1)通过各种注解实现了类与类之间的依赖关系,容器在启动的是偶SpringApplication.run(),调用EnbaleAutoConfigurationImportSelector.class的selectImports方法

2)selectImports方法调用SpringFactoriesLoader.loaderFactoryNames方法扫描jar包类路径下的META-INF/spring.fatories文件,获取BeanConfiguration列表

3)loaderFactoryNames方法读取spring.fatories中EnableAutoConfiguration.class类名对应的值

4)根据这些类上的注解判断,若条件满足,则该配置类生效,将配置文件中自己设置的属性配置到对应的配置类中,最后注入到IOC容器中实现自动配置

4. SpringBoot原理图

SpringBoot核心原理以及工作流程

 文章来源地址https://www.toymoban.com/news/detail-427252.html

5. SpringApplication执行流程

SpringBoot核心原理以及工作流程

 6.SpringBoot的启动原理以及相关流程

SpringBoot核心原理以及工作流程

 

本博客只做记录使用,参考了其他文献

 

 

到了这里,关于SpringBoot核心原理以及工作流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汽车架构-工作流程 以及相关协议解读

    全车架构(E/E)  车载测试阶段: 台架测试 HIL测试(硬件在环测试) ADAS智能辅助驾驶测试 OTA测试(远程升级测试) 测试工具: Can协议工具:Canoe Pcan Zcanpro 辅助工具:万用表(测试电压 电流 电路通断) 电源 示波器(设备信号波分析) 编程语言:Cpla Python ADb HIL硬件在环测试

    2024年02月05日
    浏览(28)
  • 了解ELK是什么? 部署流程 以及它的工作流程是什么?

    ELK是什么: ELK是一个优秀的大数据日志分析系统,由三个开源工具组成:Elasticsearch、Logstash、Kibana,三者结合提供了一个完整的日志收集、存储、分析、可视化的解决方案。 具体来说,Elasticsearch是一种分布式搜索引擎和NoSQL数据库,用于存储和检索大量结构化或非结构化数

    2024年02月16日
    浏览(32)
  • 谈谈DNS是什么?它的作用以及工作流程

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、DNS是什么? 二、DNS的作用 三、DNS查询流程 1、查看浏览器缓存 2、查看系统缓存 3、查看路由器缓存 4、查看ISP DNS 缓存 5、询问根域名服务器 6、询问顶级域名服务器

    2024年02月14日
    浏览(42)
  • 工作流程引擎之flowable(集成springboot)

    现状:公司各部门业务系统有各自的工作流引擎,也有cross function的业务在不同系统或OA系统流转,没有统一的去规划布局统一的BPM解决方案,近期由于一个项目引发朝着整合统一的BPM方案,特了解一下市面上比较主流的开源和收费的工作流引擎。本文主要介绍开源的工作流引

    2024年02月08日
    浏览(22)
  • JavaWeb - Web网站的组成,工作流程以及开发模式

    Web:全球广域网,也称玩万维网(www Wrold Wide Web),就是能够通过浏览器访问的网站 学习Web开发,其实就是要使用Java这门语言来开发这样的Web网站,这也是现在Java语言最主流的企业级应用方式。 使用Java语言开发的网站有很多,比如像淘宝,京东,唯品会这样的电商系统,还有

    2023年04月13日
    浏览(39)
  • 前端面试:【浏览器与渲染引擎】工作原理与渲染流程

    嗨,亲爱的读者!你是否曾经好奇过当你在浏览器中输入URL并按下回车时,网页是如何显示在你的屏幕上的?这背后涉及了复杂的浏览器工作原理和渲染流程。本文将带你深入了解浏览器如何工作以及网页如何被渲染出来。 1. 浏览器的工作原理: 当你输入URL并按下回车时,

    2024年02月11日
    浏览(42)
  • Springboot整合Camunda工作流引擎实现审批流程实例

    环境:Spingboot2.6.14 + camunda-spring-boot-starter7.18.0 依赖配置 应用程序配置 通过上面的配置后访问控制台: http://localhost:8100/workflow/ 默认是没有上面的tasks中的内容,这里是我之前测试数据 环境准备好后,接下来就可以设计工作流程。 上面的 camunda-bpm-spring-boot-starter-rest依赖中定义

    2024年02月09日
    浏览(34)
  • LoadRunner(一)(安装、简介、工作原理、测试流程、事务与集合点、思考时间)

    目录 性能测试  安装 LoadRunner简介 Load Generator: LoadRunner工作原理: LoadRounner 测试流程: 事务与集合点     事务的概述:         事务的作用:         使用事务的原因:     事务的添加:     设置事务             集合点的概述: controller组件中实操(可以处置、

    2024年02月03日
    浏览(46)
  • git工作原理、从仓库创建到代码拉取提交整套流程

    1、先看 Git 工作原理图,该图参考 gitee简单使用_gitea新建vue仓库选择什么.gitignore模板-CSDN博客 git 工作原理图理解: (1)Workspace:工作区,也就是我们的代码所在的地方 (2)Index / Stage:暂存区 (3)Repository:仓库区(或本地仓库 .git) (4)Remote:远程仓库 2、创建仓库流程

    2024年03月14日
    浏览(35)
  • LoadRunner入门(一)(安装、简介、工作原理、测试流程、事务与集合点、思考时间)

      目录 性能测试  安装 LoadRunner简介 Load Generator: LoadRunner工作原理: LoadRounner 测试流程: 事务与集合点     事务的概述:         事务的作用:         使用事务的原因:     事务的添加:     设置事务             集合点的概述: controller组件中实操(可以处置

    2024年03月19日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包