IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 2分钟明白springboot自动配置流程 -> 正文阅读

[Java知识库]2分钟明白springboot自动配置流程

1.自动配置流程

配置流程:

核心注解

2.简单看一下源码

找到springboot项目的启动类,ctrl鼠标左键点击springboot的核心注解 @SpringBootApplication

可以看到 @SpringBootApplication 的底层注解有三个,其他四个是元注解,用来自定义注解的,想了解可以看这篇文章——Java注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

这三个注解,用来进行自动配置的注解是@EnableAutoConfiguration,其余两个 @SpringBootConfiguration 用来声明这是一个配置类(其底层是 @Configuration),@ComponentScan 指定要扫描哪些包,默认是 启动类同一包及其子包中的组件(就是扫描自己要注册到IOC容器的组件)。

接下来看@EnableAutoConfiguration,其底层注解有 @AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)

@AutoConfigurationPackage 的作用就是就是将 @ComponentScan 扫描到的包注册到IOC容器

所以,真正实现自动配置的还是 @Import(AutoConfigurationImportSelector.class)

进入 AutoConfigurationImportSelector 类,继续追踪,可以追踪到一个类 SpringFactoriesLoader ,这个类的 loadSpringFactories(ClassLoader classLoader) 方法中有如下一段代码:

Enumeration urls = classLoader.getResources("META-INF/spring.factories");

META-INF/spring.factories 中加载到文件的,即默认扫描我们当前系统中所有 META-INF/spring.factories 中的文件,这个文件中定义了所有配置类。

这些配置类在启动 main 方法的时候会全部被加载(springboot2.6.7有137个加载的配置文件),但是最终只会按需配置30个左右,这主要是因为 @Conditionalxxx ,这个注解 按照条件配置的规则,很多不满足条件的场景不会被加载

具体的源码分析可以看这篇文章——springboot依赖管理和自动配置源码分析

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 18:48:02  更:2022-05-21 18:49:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:49:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码