SpringBoot 是如何实现自动配置的?

SpringBoot 是如何实现自动配置的?

SpringBoot 的⾃动配置不是魔法,靠的是约定⼤于配置的思想和⼏个关键机制组合起来的。

启动时会扫描 classpath 下所有 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports ⽂件,⾥⾯列了⼀堆自动配置类。这些类不会⽆脑加载,每个都带着条件注解,⽐如 @ConditionalOnClass 、@ConditionalOnMissingBean ,只有满⾜条件才⽣效。

举个例⼦,你引⼊了 spring-boot-starter-data-redis ,classpath ⾥有了LettuceConnectionFactory ,⾃动配置发现这个类存在,⽽且容器⾥还没⼈创建过 RedisTemplate,它就帮你把连接池、模板对象都配好。

1) ⾃动配置类通常放在 spring.factories 或org.springframework.boot.autoconfigure.AutoConfiguration.imports 中

2) 条件装配确保不冲突,⽐如只在某个类存在且某个 Bean 缺失时才创建

3) 配置优先级可通过 @AutoConfigureAfter 控制

别⼩看 @EnableAutoConfiguration 这个注解,它就是触发整个链路的开关。实际项⽬⾥像 Nacos、MyBatis-Plus 的 starter 都是照这个套路来,把⼀堆初始化逻辑封装掉,你写个依赖就能⽤。

线上CPU飙高如何排查? 2026-03-21
SpringBoot 的启动流程 2026-03-22

评论区