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

spring.factories文件作用详解,@SpringBootApplication启动过程与其关联

🔊spring.factories文件作用详解,@SpringBootApplication启动过程与其关联

image-20230626113624018

在maven中引用的其他外部包加入容器的过程,需要用到spring.factories

spring.factories是用于springboot在自动装配过程中,通过扫描所有jar包和classpath下的spring.factories文件去加载bean;文件格式为键值对,键是自动配置类的固定名称,值为配置文件全路径

image-20230626114042326

@SpringBootApplication启动过程与spring.factories关联

@SpringBootApplication为一个组合注解,通过@EnableAutoConfiguration开启自动装配

image-20230626114207036

点进@EnableAutoConfiguration发现其中有一个@Import注解

image-20230626114328863

里面写了AutoConfigurationImportSelector, springboot项目启动时, 会调用它里面一个方法loadFactoryNames, 这个方法会扫描pom文件中引入的其他starter中的spring.factories文件, 具体的调用路径为:

📝1.selectImports
📜 2.getAutoConfigurationEntry
📘3.getCandidateConfigurations
📖4.SpringFactoriesLoader.loadFactoryNames(this.
getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader())
📅5.loadFactoryNames
🍁6.loadSpringFactories

image-20230626114712594

image-20230626114747133

image-20230626114812860

image-20230626115013277

最后调用loadFactoryNames( )方法,这个方法的会扫描pom文件中引入的其他starter中的spring.factories文件。

spring.factories文件内容示例如下:

代码语言:java

AI代码解释

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration,\com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration
http://www.dtcms.com/a/133470.html

相关文章:

  • SpringCloud-快速通关(二)
  • Scrapy结合Selenium实现搜索点击爬虫的最佳实践
  • 一站式Windows下Docker开启MySQL并链接本地Navicat(附乱码解决方案)
  • Docker学习笔记-docker安装、删除
  • 单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法
  • 如何撤回刚提交的 commit
  • 在交换机上划分VLAN并配置IP地址的完整指南
  • C数据结构--顺序表
  • 【Linux】41.网络基础(2.3)
  • SQL 查询中 ORDER BY 的执行顺序
  • 30学Java第十天——类加载的过程
  • **searchProperties 是什么,python中**是什么:解包字典的操作符
  • camx的xml解析
  • 【跳坑日记】Jetson 6.2 编译cuda-sample报错:No CMAKE_CUDA_COMPILER could be found
  • java android持久化数据
  • c#内存泄露的原因和解决办法
  • 全新电脑如何快速安装nvm,npm,pnpm
  • 批量将文件夹名称、文件夹路径提取到 Excel 清单
  • git在IDEA中使用技巧
  • RabbitMQ消息的可靠性
  • 腾讯云golang一面
  • Project ERROR: liblightdm-qt5-3 development package not found问题的解决方法
  • 基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)
  • 双向链表中间插入节点,删除节点
  • Trae CN 使用入门指南
  • 【uniapp-兼容性处理】swiper在iOS上偶发出现后几张图片白屏情况
  • Vue使用axios实现:上传文件、下载文件
  • .NET Core DI(依赖注入)的生命周期及应用场景
  • React 更新state中的对象
  • Doris 中 Compaction 问题的深度剖析与解决方案