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

【HBZ分享】spring启动时自动装配的位置

自动装配流程

  1. springboot启动时,自动装配逻辑在@SpringBootApplication这个符合注解中的@EnableAutoConfiguration
  2. 新版springboot3会扫描META-INF的spring文件夹下的org.springframework.boot,autoconfigure,AutoConfiguration.imports文件,会把这里所有写的自动装配类路径全部拉取到内存
  3. 初步排除一下不需要自动装配的类,即看下这些类上面是否存在@EnableAutoConfiguration注解,不存在该注解直接被排除,remove出map集合中
  4. 进一步判断留下的这些自动装配类是否需要加载到IOC, 此时会根据META-INF的spring-autoconfigure-metadata.properties里面的条件进行filter过滤,只会加载符合条件的自动装配类
  5. 实际上经过filter条件过滤后,大多数类都不会被加载
  6. 如果是springboot2.7之前的版本,自动装配类扫描路径是在META-INF下的spring.factories文件。

自动装配文件配置的所在位置

  1. 旧版的自动装配类配置的路径:
    在META-INF下的spring.factories文件中,以key-value的形式

  2. 新版本自动装配类的路径:
    在META-INF的spring文件夹下的org.springframework.boot,autoconfigure,AutoConfiguration.imports文件中,这个文件名和路径必须这么写,是固定的。内容是以【包名+类名】的格式,每个自动装配独立占1行,无需加什么分隔符,直接换行写第二个自动装配类即可

  3. 校验过滤哪些自动装配类的条件:
    在META-INF的spring-autoconfigure-metadata.properties中,这里面定义了所有需要自动装配的条件,只有符合的才会自动装配

新版自动装配类的写法org.springframework.boot,autoconfigure,AutoConfiguration.imports截图:
在这里插入图片描述

旧版自动装配写法spring.factories截图:
在这里插入图片描述

spring-autoconfigure-metadata.properties自动装配条件文件截图:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于FPGA的数字信号处理(20)--半减器和全减器
  • PySide6/PyQT学习笔记(很杂)
  • 如何实现element UI循环表单?
  • 神奇的TypeScript -- 进阶篇之实用工具类型
  • 原神自定义倒计时
  • Codeforces Round 960 (Div. 2)-补题
  • Web 搜索引擎优化
  • AI论文速读 | 2024MM【开源】时间序列预测中频率动态融合
  • 【Python机器学习】支持向量机——手写数字识别问题
  • 深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
  • 反激式电源为什么上电最容易烧MOS管?
  • python dash框架
  • 【linux深入剖析】初识线程---线程概念
  • JavaEE-多线程编程阻塞队列
  • 探索之路——初识 Vue Router:构建单页面应用的完整指南
  • Google 是如何开发 Web 框架的
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CentOS 7 修改主机名
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • java正则表式的使用
  • jdbc就是这么简单
  • JS变量作用域
  • nfs客户端进程变D,延伸linux的lock
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • spring学习第二天
  • uva 10370 Above Average
  • 不上全站https的网站你们就等着被恶心死吧
  • 记录:CentOS7.2配置LNMP环境记录
  • 来,膜拜下android roadmap,强大的执行力
  • 如何利用MongoDB打造TOP榜小程序
  • 微信小程序开发问题汇总
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • - 转 Ext2.0 form使用实例
  • ​zookeeper集群配置与启动
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #VERDI# 关于如何查看FSM状态机的方法
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (笔试题)合法字符串
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (汇总)os模块以及shutil模块对文件的操作
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)Linux Shell编程——输入输出重定向
  • (一) storm的集群安装与配置
  • (转)Mysql的优化设置
  • (转)大型网站的系统架构
  • (转)项目管理杂谈-我所期望的新人
  • (转载)Linux网络编程入门
  • ***监测系统的构建(chkrootkit )
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .net 调用海康SDK以及常见的坑解释