当前位置: 首页 > news >正文

系列十三、SpringBoot的自动配置原理分析

一、概述

        我们知道Java发展到现在功能十分的强大,生态异常的丰富,这里面离开不了Spring及其家族产品的支持,而作为Spring生态的明星产品Spring Boot可以说像王者一般的存在,那么的耀眼,那么的光彩夺目!那么它凭什么这么强大呢? 这就不得不说到Spring Boot的自动配置原理了,可以这么说,Spring Boot之所以这么强大,就是因为有自动配置的加持它才这么强大的,那么它的自动配置原理是怎样的呢?请看下图分析:

二、原理

        1、SpringBoot有一个主启动类,主启动类上标注了@SpringBootApplication注解,而@SpringBootApplication又是一个复合注解,引入了@EnableAutoConfiguration注解(负责开启自动配置功能);

        2、@EnableAutoConfiguration引入了@Import注解

        3、Spring容器启动会加载IOC容器,加载IOC容器时会解析@Import注解;

        4、@Import注解导入了一个AutoConfigurationImportSelector(实现了延迟导入选择器,会使SpringBoot的自动配置类的加载顺序在最后,这样方便我们覆盖和扩展);

        5、读取所有/META-INF/spring.factories中的文件信息;

6、过滤出所有xxxAutoConfiguration类型的类

7、最后再通过@ConditionalOnXXX排除无效的自动配置类

相关文章:

  • 【工具使用-Audition】如何使用Audition频谱分析
  • 鸿蒙(HarmonyOS)应用开发——管理组件状态
  • [ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup
  • spring日志输出到elasticsearch
  • 视频文件+EasyDarwin做摄像机模拟器模拟RTSP流很方便,还能做成系统服务,方法与流程
  • 数据结构——二叉树(相关术语、性质、遍历过程)
  • 数据库表的管理
  • 【使用类、全局变量、函数参数进行传参在工程代码中的优缺点】
  • 如何使用gdb调试fork程序
  • Android 使用aapt工具获取apk信息
  • Hadoop YARN组件
  • 初学Flink 学后总结
  • WordPress采集器自动采集发布的工具
  • 鸿蒙开发:Stage模型开发-应用/组件级配置以及UIAbility组件初步使用【鸿蒙专栏-20】
  • VPS服务器”性价比之王”系列:RackNerd
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • css布局,左右固定中间自适应实现
  • express如何解决request entity too large问题
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • linux学习笔记
  • Sass 快速入门教程
  • SOFAMosn配置模型
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 后端_MYSQL
  • 基于axios的vue插件,让http请求更简单
  • 每天一个设计模式之命令模式
  • 前端
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 实习面试笔记
  • 微服务入门【系列视频课程】
  • 一个完整Java Web项目背后的密码
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 正则表达式
  • Nginx实现动静分离
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​Spring Boot 分片上传文件
  • !!Dom4j 学习笔记
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • %check_box% in rails :coditions={:has_many , :through}
  • (04)odoo视图操作
  • (4)logging(日志模块)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二)构建dubbo分布式平台-平台功能导图
  • (接口自动化)Python3操作MySQL数据库
  • (三)终结任务
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (五)c52学习之旅-静态数码管