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

Spring Boot自动装配原理

实例:

  1. 引入依赖
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
  2. 配置服务器 
     
  3. redis自动装配

原理:

 一切都源于一个关键的注解:

@SpringBootApplication

 从下图可以看到, @SpringBootApplication的几个核心注解

 @EnableAutoConfiguration:

实现自动配置的关键就在于@EnableAutoConfiguration这个注解:

它通过导入@Import(AutoConfigurationImportSelector.class)来实现自动配置

 

如何实现 AutoConfigurationImportSelector呢?

核心逻辑
  1. 配置文件位置:

    • META-INF/spring.factories 文件位于 classpath 中。

    • 每个 Jar 包都可以提供自己的 spring.factories 文件。

  2. 文件格式:

    • 文件内容是 key=value1,value2,...valueN 的格式。

    • key 是指定的接口或抽象类的全限定名。

    • value 是实现类或具体类的全限定名,多个类名用逗号分隔。

  3. 加载机制:

    • Spring 使用 SpringFactoriesLoader 类加载 spring.factories 文件。

    • 通过 ClassLoader 读取 classpath 中的所有 spring.factories 文件。

    • 根据指定的 key 解析出对应的 value,并返回类名的集合。

实现流程: 

这里我总结一下AutoConfigurationImportSelector的实现流程:

  1. AutoConfigurationImportSelector.selectImports(......)。
  2. 通过SpringFactories机制加载配置文件:通过ClassLoader去获取classpath中的配置文件META-IF/spring.factories。
  3. 找出所有的自动配置类:在所有的配置文件META-IF/spring.factories中,筛选出以EnabkeAutoConfiguration.class为key的,符合条件的配置类。
  4. 根据注解@Conditional过滤掉不必要的自动配置类:注解@Conditional,提供了一种灵活的过滤机制。

总结,自动装配流程: 

还是以redis为例:



  1.  

http://www.mrgr.cn/news/93610.html

相关文章:

  • MySQL第一次作业
  • 将wq9001驱动集成到rv1106 SDK
  • DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!
  • Vulnhub-Node
  • dp_走方格(包含dfs分析,记忆化搜索)
  • qt设计器中 使用grid layout绘制了三行五列 如何使一个按钮在第二行占用五列
  • Express 中 get 参数获取
  • 企业如何选择研发项目进度管理软件?盘点15款实用工具
  • C++————类和对象(一)
  • 【VUE2】第二期——生命周期及工程化
  • MySQL表中数据基本操作
  • 蓝桥杯题型
  • python语言总结(持续更新)
  • 【VUE2】第一期——初使用、基本语法
  • 权限系统基础知识笔记
  • CUDA计时函数:精确测量GPU代码执行时间
  • Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴
  • 【leetcode hot 100 206】反转链表
  • PDF文档中表格以及形状解析-后续处理(长线段根据交点打断成短线段)
  • Pytest自动化框架