SpringBoot自动配置为什么比手动配置方便原理是什么

千伟同学_4926

千伟同学_4926

2026-08-07

1014人浏览

原创

spring boot自动配置省去了传统spring mvc中手动注册dispatcherservlet、配置internalresourceviewresolver和mappingjackson2httpmessageconverter等操作,以及jpa中手写datasource、entitymanagerfactory和transactionmanager等繁重配置,仅需引入starter依赖和简单属性配置即可完成组件自动装配。

springboot自动配置为什么比手动配置方便原理是什么

SpringBoot自动配置能让你在引入spring-boot-starter-web后,不写一行XML或Java配置,就直接启动一个带Tomcat和DispatcherServlet的Web服务,而传统Spring项目必须手动注册Servlet、配置视图解析器、声明消息转换器等十多项Bean。

自动配置省掉了哪些手动操作

传统Spring MVC项目需显式定义以下三类核心组件:① DispatcherServlet作为前端控制器,需在web.xml中注册或通过ServletRegistrationBean声明;② InternalResourceViewResolver用于解析JSP路径,必须指定prefixsuffix;③ MappingJackson2HttpMessageConverter处理JSON序列化,要手动注入ObjectMapper并设置日期格式。这些配置在Spring Boot中全部消失——只要依赖存在,对应Bean就自动注册进容器。

引入spring-boot-starter-data-jpa时,传统方式要手写DataSource(含URL/用户名/密码/驱动类)、LocalContainerEntityManagerFactoryBean(含包扫描路径、JPA供应商)、JpaTransactionManager(绑定数据源);Spring Boot仅需在application.yml里填spring.datasource.url等三项,其余全由JpaBaseConfiguration类按条件注入。

@EnableAutoConfiguration如何触发自动装配

第一步:启动类上的@SpringBootApplication注解隐含@EnableAutoConfiguration

第二步:@EnableAutoConfiguration通过@Import(AutoConfigurationImportSelector.class)导入选择器;

第三步:该选择器调用SpringFactoriesLoader.loadFactoryNames(),扫描所有META-INF/spring.factories文件(Spring Boot 3.0+已迁移至META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports),读取其中org.springframework.boot.autoconfigure.EnableAutoConfiguration键对应的100+个配置类全限定名;

吐司AI高清
吐司AI高清

吐司AI高清是一款AI图片处理工具,Toast AI 推出的图像超分辨率/修复工具。

下载

第四步:对每个候选配置类,检查其上标注的@ConditionalOnClass@ConditionalOnMissingBean等条件——比如RedisAutoConfiguration要求类路径存在RedisOperations.class且容器中未定义RedisTemplate实例,两项同时满足才加载。

条件注解决定“该不该配”

方法一:@ConditionalOnClass检查类是否在classpath中。例如HikariDataSource.class存在时,DataSourceAutoConfiguration才会生效——若你用的是Druid连接池,Hikari类不存在,该配置类直接跳过,避免冲突。

方法二:@ConditionalOnMissingBean确保不覆盖已有Bean。当你自己定义了@Bean DataSource dataSource()方法,Spring Boot内置的DataSource自动配置就会被抑制,【这是防止重复注册导致启动失败的关键保护】

方法三:@ConditionalOnProperty依据配置项开关功能。如spring.redis.enabled=false时,所有Redis相关自动配置类均不加载,连RedisAutoConfiguration里的@ConditionalOnClass(RedisOperations.class)都不再判断。

starter封装让依赖即能力

spring-boot-starter-web不是单个jar,而是Maven BOM(Bill of Materials):它声明了spring-webmvctomcat-embed-corejackson-databind等7个依赖的精确版本,并在自己的META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中预置WebMvcAutoConfigurationEmbeddedTomcatAutoConfiguration等类路径——你只需引入一个starter,框架就知道该加载哪些自动配置类、该准备哪些底层依赖。

这一步操作起来很简单,直接把spring-boot-starter-web加进pom.xml就行。但背后是Spring Boot团队为每个中间件(Redis/Kafka/JDBC)都编写了配套的starter和自动配置类,开发者不用再查文档确认该引哪些包、哪个版本兼容、怎么初始化模板对象。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2071

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

377

25

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

160

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

60

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

80

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

60

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

40

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

380

28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Redis6入门到精通超详细教程
Redis6入门到精通超详细教程

共47课时 | 7万人学习