springboot自动配置的原理_SpringBoot自动配置原理
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自动配置原理相关推荐
- springboot 请求路径有后缀_SpringBoot中配置Web静态资源路径的方法
介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, J ...
- springboot配置mysql数据源_SpringBoot+mysql配置两个数据源
1.properties配置文件信息 spring.datasource.primary.jdbc-url=jdbc:mysql://rm... spring.datasource.primary.u ...
- springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理
SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...
- batch normalization的原理和作用_springboot自动配置原理
配置文件能配置的属性参照https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-appli ...
- SpringBoot(2.4.0)自动配置原理(源码)
一.从@SpringBootApplication讲起 源码 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Docu ...
- SpringBoot核心原理:自动配置、事件驱动、Condition
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/l6108003/article/ details/106966386 前言 SpringBoot是Spring的包装,通过自动 ...
- 配置文件加载位置||外部配置加载顺序||自动配置原理
配置文件加载位置 SpringBoot会从这四个位置全部加载主配置文件:互补配置: 外部配置加载顺序 自动配置原理 1.自动配置原理: 1).SpringBoot启动的时候加载主配置类,开启了自动配置 ...
- springboot aop使用_Spring Boot 的自动配置,是如何实现的?
点击上方"IT牧场",选择"设为星标"技术干货每日送达! 作者 | 祖大帅 链接 | juejin.im/post/5b679fbc5188251aad2131 ...
- Day14(springboot与mybatis整合、mybatis自动代码生成、swagger、thymeleaf、lombok环境配置、mybatisPlus介绍(自动代码生成))
srpingboot和mybatis整合 springbootSSM项目下载地址 链接:https://pan.baidu.com/s/11fwh1C7ZOg3jQVlXl2DJjQ 提取码:83yt ...
最新文章
- 欲精一行,必先通十行
- Windows 10 太难用,如何定制你的 Ubuntu?
- 2009年3月全国计算机等级考试二级vfp笔试,2009年3月全国计算机等级考试二级VFP笔试试题及答案.doc...
- java中将string类型转int类型或者将string类型转long类型方法(亲测)
- app/bootstrap.php.cache : failed to open stream: No such file or directory
- Java中List、Collections实现梭哈游戏
- eclipse中文版界面设置黑色_Eclipse设置黑色主题
- 生成Bernese格式的地球自转参数文件-POLUPD
- SQL Server 查询出金额转换为大写
- Android封装支付宝支付
- Android WiFi 连接 (Connect,no Internet,带叉)
- ecshop 添加会员头像功能
- 【时间序列】时序分析实战之SARIMA、Linear model...
- 微型计算机m3500q,爆发“小”宇宙 创新与实用完美结合 ——联想ThinkCentre M3500q超小商用台式机新品发布...
- catia v5r18 百度云_catia v5r18 64位免费版 附带安装教程
- antd Mobile Tabs 垂直布局 后台传入数据
- Vrep/CoppeliaSim:安装及相关资料
- iphone4s改装 linux,iPhone4S降级教程(支持iOS5.1.1)可实现完美越狱
- 有什么图片翻译软件?快把这些软件收好
- 爬虫训练场项目重要组件,导航栏+轮播图