尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Spring Boot自动配置

Spring Boot自动配置
📅 发布时间:2026/6/20 9:36:42

Spring Boot自动配置

一、核心思想与目标

自动配置是Spring Boot的基石,其核心目标是:根据项目中引入的依赖(JAR包)和预设的配置,自动、智能地组装和配置Spring应用所需的Bean,实现“约定大于配置”,让开发者专注于业务逻辑,而非繁琐的框架配置。

二、自动配置的三大核心注解

自动配置的旅程始于主类上的@SpringBootApplication。它是一个复合注解,主要由以下三个关键注解组成:

注解核心职责简要说明
@SpringBootConfiguration标识配置类本质上是@Configuration的变体,表明该类是一个Spring配置类。
@ComponentScan组件扫描默认扫描主类所在包及其子包下的@Component,@Service,@Repository,@Controller等注解的类。
@EnableAutoConfiguration启用自动配置(核心)这是自动配置的“总开关”。它通过@Import导入了一个关键的选择器类。
三、自动配置的工作原理(核心流程)

整个自动配置流程围绕@EnableAutoConfiguration展开,其核心是一个“发现-加载-条件装配”的过程。

第1步:触发与导入

  • 当应用启动时,@EnableAutoConfiguration注解会通过@Import注解,导入一个核心选择器类:AutoConfigurationImportSelector。

第2步:加载候选配置类(发现阶段)

  • AutoConfigurationImportSelector会调用SpringFactoriesLoader.loadFactoryNames()方法。

  • 这个方法会扫描所有依赖JAR包中META-INF/spring.factories这个配置文件。

  • 它查找配置文件中EnableAutoConfiguration这个Key对应的所有值。这些值就是全限定类名,即一个个自动配置类(例如:org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration)。

  • spring.factories文件示例:

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.MyAutoConfiguration,\ org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration

第3步:过滤与条件装配(核心中的核心)

  • 此时,Spring Boot获得了所有可能的自动配置类清单。但并非所有类都会生效。

  • 每个自动配置类上都标有大量的@Conditional及其衍生注解(如@ConditionalOnClass,@ConditionalOnMissingBean,@ConditionalOnProperty)。

  • Spring Boot会逐一检查这些条件注解是否满足:

    • @ConditionalOnClass:类路径下存在指定的类时才生效。(例如,当存在DataSource.class时,数据源相关的自动配置才生效)。

    • @ConditionalOnMissingBean:当Spring容器中不存在指定类型的Bean时才生效。(这为用户自定义Bean覆盖默认配置提供了可能)。

    • @ConditionalOnProperty:当指定的配置属性满足条件时才生效。

  • 只有全部条件都满足的自动配置类,才会被真正加载到Spring容器中。

第4步:注册Bean

  • 最终生效的自动配置类本身就是一个标准的@Configuration类。

  • 在这些类中,通过@Bean注解定义了一系列的Bean(如DataSource,DispatcherServlet,EntityManagerFactory等)。

  • 这些Bean被注册到Spring IOC容器中,从而完成了整个应用上下文的自动组装。

四、一个生动的例子:MyBatis-Spring-Boot-Starter
  1. 引入依赖:你在pom.xml中添加mybatis-spring-boot-starter。

  2. 提供配置类:该Starter的JAR包中包含META-INF/spring.factories文件,其中声明了自己的自动配置类,例如MybatisAutoConfiguration。

  3. 条件判断:MybatisAutoConfiguration类上可能标有@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })。因为引入了Starter,这些类都在类路径下,条件满足。

  4. 创建Bean:该配置类内部会使用@Bean注解,自动创建并配置SqlSessionFactory、SqlSessionTemplate等MyBatis核心组件所需的Bean。

  5. 用户自定义:如果你想覆盖默认配置,只需在自己的@Configuration类中,手动定义一个SqlSessionFactoryBean。由于@ConditionalOnMissingBean的条件,Spring Boot将优先使用你定义的Bean,而不会使用自动配置提供的默认Bean。

相关新闻

  • GPT-SoVITS语音合成延迟优化:GPU加速推理实战
  • GPT-SoVITS游戏配音应用:快速生成角色专属语音
  • 微信小程序校园寻物失物招领有论文

最新新闻

  • NXP智能门禁平台开发实战:BLE/UWB协同定位、人脸识别与Matter协议集成
  • 2026成都净化车间装修避坑指南:如何筛选靠谱的EPC总包服务商? - 洁净室推广助手
  • 如何快速使用SyncTV:远程同步观影的完整指南
  • Agentic RL基础设施实战地图:从Runtime到演化的四层构建指南
  • HandheldCompanion:5个技巧让你的掌机游戏体验完美升级
  • 如何集成Sidekiq-Statistic到Rails应用:从入门到精通

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号