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

(Spring)Spring Boot 自动装配原理总结

Spring Boot 的自动装配(Auto-Configuration)是其核心特性之一,使开发者可以**“开箱即用”**,无需手动配置大量 Bean,极大地提高了开发效率。


一、自动装配的概念

自动装配是指 根据 classpath、已有 Bean 和应用配置,自动为 Spring 容器注入所需的 Bean,而无需手动配置。例如:

@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

引入 spring-boot-starter-web 后,Spring Boot 会自动装配:

  • DispatcherServlet

  • Tomcat 或其他容器

  • JSON 转换器等 Web 相关组件


二、自动装配的实现原理

1. @SpringBootApplication

  • 核心注解,组合了:

    • @SpringBootConfiguration → 声明配置类

    • @EnableAutoConfiguration → 开启自动装配

    • @ComponentScan → 扫描组件

  • 自动装配的关键是 @EnableAutoConfiguration

2. @EnableAutoConfiguration

  • 本质上是:

@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {}
  • 导入 AutoConfigurationImportSelector,负责读取和选择自动配置类

3. AutoConfigurationImportSelector 流程

  1. 读取自动配置类
    Spring Boot 在 META-INF/spring.factories 文件中定义了大量自动配置类:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
  1. 条件判断
    每个自动配置类通常使用 @Conditional 系列注解:

    • @ConditionalOnClass → 当 classpath 存在指定类时生效

    • @ConditionalOnMissingBean → 当容器中没有该 Bean 时生效

    • @ConditionalOnProperty → 根据配置文件属性生效

示例:

@Configuration
@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
public class DataSourceAutoConfiguration {@Beanpublic DataSource dataSource() {return new HikariDataSource();}
}
  1. 注册 Bean 到容器
    符合条件的配置类会被解析为普通 @Configuration,注册对应 Bean 到 Spring 容器中。


三、核心条件注解

注解作用
@ConditionalOnClassclasspath 中存在指定类时生效
@ConditionalOnMissingBean容器中不存在指定 Bean 时生效
@ConditionalOnBean容器中存在指定 Bean 时生效
@ConditionalOnProperty配置文件中存在指定属性时生效

四、整体流程总结

  1. Spring Boot 启动,扫描 @SpringBootApplication

  2. @EnableAutoConfiguration 导入 AutoConfigurationImportSelector

  3. 读取 spring.factories 中的自动配置类

  4. 对每个自动配置类进行条件判断

  5. 符合条件的 Bean 注册到容器

  6. 应用即可直接使用自动装配的组件


五、面试回答精炼版

Spring Boot 自动装配通过 @EnableAutoConfiguration 导入 AutoConfigurationImportSelector 实现,它读取 spring.factories 中的自动配置类,并根据 @Conditional 条件判断是否注册 Bean,从而实现开箱即用。

http://www.dtcms.com/a/601715.html

相关文章:

  • 网站没有备案做竞价吗浙江企业响应式网站建设设计
  • 若依部署Nginx和Tomcat
  • flash网站报价电子商务seo名词解释
  • 宁德网站开发seo排名优化方式
  • 实时大数据计算中,Flink的滑动窗口,乱序,允许消息迟到机制
  • 李飞飞联合杨立昆发表最新论文:超感知AI模型从视频中“看懂”并“预见”三维世界
  • GSV1016/ACP#HDMI2.0 HDCP1.4 发射器(TTL/LVDS 输入 + 音频插入)技术解析
  • 一级a做爰片免费网站中国片落实二十条优化措施
  • Dell笔记本电脑怎么连接无线网络 详细教程分享
  • 龙华网站建设哪家好我的世界做视频封面的网站
  • 男女做羞羞漫画网站南昌企业网站建设公司
  • 【学习笔记】多智能体系统
  • openeuler-24.3欧拉系统mysql开机自启报错
  • Versatile英文单词学习
  • 【OCP考试喜报】2025.11月 ORACLE OCP 考试通过
  • 【NCCL】NCCL 中的channel 是什么概念?
  • 工业自动化系统使用的高边驱动IC
  • 云南安宁做网站的公司皖icp备 网站建设
  • 做百度移动网站点击电脑有网
  • 如何高效设置机器学习超参数?——借鉴成熟AutoML框架的实践
  • python学习之路(七)
  • 长沙网站公司网站建设wordpress 分享到微信二维码
  • 主流的⼤语⾔模型
  • 03-事务高频面试总结
  • Go语言编译原理解析 | 提升开发效率的实用指南
  • html网站完整代码天元建设集团有限公司成立时间
  • 咨询转化率涨35%,声网AI客服拯救跨境生意
  • 培训系统哪家好?TOP10企业培训系统推荐!
  • 找网站推广做网站的法律
  • 基于Gradient Boosting模型的关键驱动因素分析:Permutation、SHAP与PDP/ALE的组合方法研究