SpringBoot的启动入口就是一个非常简单的run方法,这个run方法会加载一个应用所需要的所有资源和配置,最后启动应用。

通过查看run方法的源码,我们发现,run方法首先启动了一个监听器,然后创建了一个应用上下文ConfigurableApplicationContext,我们知道,context就是用来加载各种bean和环境配置等信息。

在context的初始化过程中,会调用一个load方法,将我们的启动类当做参数(sources)传进去,这个方法的主要作用就是加载应用所需的各种bean和资源配置。

load方法会创建一个BeanDefinitionLoader,由BeanDefinitionLoader的loader方法来执行具体的加载。

BeanDefinitionLoader的load方法根据所传入的不同source类型来选择不同的加载方式,前面说到,这整个过程之中,source里面就只有启动类这一个对象,所以这里就将其强转成Class并加载。

加载Class的方法里面调用了一个isComponent(Class> type)方法,这个方法便是用来判断加载的类上有没有注解的,如果有,就要开始解析注解了。

如此一来,启动类上的@SpringBootApplication注解就会被调用,这个注解是实现SpringBoot自动配置功能的关键所在。

查看@SpringBootApplication的源码,我们发现它实际上是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解的合集。其中@EnableAutoConfiguration是启用自动配置的,并将导入一些自动配置的类定义;@ComponentScan用来加载应用中一些自定义的类。

@EnableAutoConfiguration最终会导入一个自动配置的类列表,这些类大多数都处于备用状态。这边是SpringBoot自动配置的秘密,它已经把你可能要用到的东西全都准备好了,一旦你引入了相关的jar包,对应的功能就会被启用,应用启动时,程序就会读取相关的配置信息。程序首先会尝试到配置文件中读取相关的配置信息,如果配置文件中没有,那么就会启用配置的默认值。

springboot自动配置的原理_SpringBoot自动配置原理相关推荐

  1. springboot 请求路径有后缀_SpringBoot中配置Web静态资源路径的方法

    介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, J ...

  2. springboot配置mysql数据源_SpringBoot+mysql配置两个数据源

    1.properties配置文件信息 spring.datasource.primary.jdbc-url=jdbc:mysql://rm... spring.datasource.primary.u ...

  3. springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理

    SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...

  4. batch normalization的原理和作用_springboot自动配置原理

    配置文件能配置的属性参照https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-appli ...

  5. SpringBoot(2.4.0)自动配置原理(源码)

    一.从@SpringBootApplication讲起 源码 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Docu ...

  6. SpringBoot核心原理:自动配置、事件驱动、Condition

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/l6108003/article/ details/106966386 前言 SpringBoot是Spring的包装,通过自动 ...

  7. 配置文件加载位置||外部配置加载顺序||自动配置原理

    配置文件加载位置 SpringBoot会从这四个位置全部加载主配置文件:互补配置: 外部配置加载顺序 自动配置原理 1.自动配置原理: 1).SpringBoot启动的时候加载主配置类,开启了自动配置 ...

  8. springboot aop使用_Spring Boot 的自动配置,是如何实现的?

    点击上方"IT牧场",选择"设为星标"技术干货每日送达! 作者 | 祖大帅 链接 | juejin.im/post/5b679fbc5188251aad2131 ...

  9. Day14(springboot与mybatis整合、mybatis自动代码生成、swagger、thymeleaf、lombok环境配置、mybatisPlus介绍(自动代码生成))

    srpingboot和mybatis整合 springbootSSM项目下载地址 链接:https://pan.baidu.com/s/11fwh1C7ZOg3jQVlXl2DJjQ 提取码:83yt ...

最新文章

  1. 欲精一行,必先通十行
  2. Windows 10 太难用,如何定制你的 Ubuntu?
  3. 2009年3月全国计算机等级考试二级vfp笔试,2009年3月全国计算机等级考试二级VFP笔试试题及答案.doc...
  4. java中将string类型转int类型或者将string类型转long类型方法(亲测)
  5. app/bootstrap.php.cache : failed to open stream: No such file or directory
  6. Java中List、Collections实现梭哈游戏
  7. eclipse中文版界面设置黑色_Eclipse设置黑色主题
  8. 生成Bernese格式的地球自转参数文件-POLUPD
  9. SQL Server 查询出金额转换为大写
  10. Android封装支付宝支付
  11. Android WiFi 连接 (Connect,no Internet,带叉)
  12. ecshop 添加会员头像功能
  13. 【时间序列】时序分析实战之SARIMA、Linear model...
  14. 微型计算机m3500q,爆发“小”宇宙 创新与实用完美结合 ——联想ThinkCentre M3500q超小商用台式机新品发布...
  15. catia v5r18 百度云_catia v5r18 64位免费版 附带安装教程
  16. antd Mobile Tabs 垂直布局 后台传入数据
  17. Vrep/CoppeliaSim:安装及相关资料
  18. iphone4s改装 linux,iPhone4S降级教程(支持iOS5.1.1)可实现完美越狱
  19. 有什么图片翻译软件?快把这些软件收好
  20. 爬虫训练场项目重要组件,导航栏+轮播图

热门文章

  1. 3.12 12!配对
  2. android抓包工具——使用fiddler4在安卓手机抓包
  3. Docker1.8在Centos7下的安装
  4. 发送邮件时,如何附带上中文等价名信息
  5. I AM NOTHING vs I AM SOMETHING
  6. 詹森不等式_注意詹森差距
  7. 熊猫数据集_熊猫迈向数据科学的第三部分
  8. 680. 验证回文字符串 Ⅱ
  9. Kubernetes 入门(3)集群安装
  10. javascript函数式_如何以及为什么在现代JavaScript中使用函数式编程