SpringBoot--自动装配
📌 一、自动装配的定义
Spring Boot 自动装配是一种 约定优于配置 的机制,它能根据你当前项目中的依赖,自动地帮你配置 Spring 容器中的 Bean,大大简化了开发过程中的配置工作。
🧠 二、核心注解与原理
1.
@SpringBootApplication这是 Spring Boot 的启动注解,等价于:
@Configuration @EnableAutoConfiguration @ComponentScan其中关键的是
@EnableAutoConfiguration。
2.
@EnableAutoConfiguration这个注解的作用是 启用自动配置机制。
它的底层逻辑:
通过
SpringFactoriesLoader加载类路径下:META-INF/spring.factories(Spring Boot 2.x) META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 3.x)找到所有的自动配置类(例如:
RedisAutoConfiguration、WebMvcAutoConfiguration等)判断当前项目是否引入了相关依赖(例如是否有
redis相关 jar)满足条件就自动注册对应的 Bean
3. 自动配置类举例
DataSourceAutoConfiguration:数据库连接池配置
RedisAutoConfiguration:Redis 配置
WebMvcAutoConfiguration:SpringMVC 配置
JacksonAutoConfiguration:JSON 序列化配置每个自动配置类通常都包含:
@ConditionalOnClass:存在某个类时才生效
@ConditionalOnMissingBean:容器中不存在某个 Bean 时才注入
@ConfigurationProperties:读取配置文件中的属性(如application.yml)
⚙️ 三、典型流程简图
引入某个 starter,例如
spring-boot-starter-data-redis
@EnableAutoConfiguration会扫描所有spring.factories中的配置类检查是否满足配置条件(是否有依赖、配置文件是否配置了参数等)
自动将配置类中声明的 Bean 注入容器中
如果你显式定义了某个 Bean,它就不会再自动配置(防止冲突)
✅ 四、自动装配的优点
简化配置:无需手动配置大量 XML 或 Java Config
开箱即用:加入依赖即可使用,默认行为合理
灵活可扩展:你仍然可以自定义覆盖默认配置
🔍 五、如何查看有哪些自动配置类?
方法一:查看
spring-boot-autoconfigure包中的配置类(如RedisAutoConfiguration)方法二:启动日志中搜索:
Positive matches(命中自动配置) Negative matches(未命中)方法三:使用
spring-boot-actuator提供的/actuator/conditions(需开启)
🔧 六、禁用某些自动配置类
使用
@SpringBootApplication(exclude = { XXXAutoConfiguration.class }):@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
🧪 七、如何自定义自动配置类?
自定义自动配置步骤:
创建配置类,加上
@Configuration加上条件注解(如
@ConditionalOnClass,@ConditionalOnMissingBean)在
resources/META-INF/spring.factories(或 3.x 用 imports)中手动注册:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.config.MyCustomAutoConfiguration
📝 总结一句话
Spring Boot 自动装配就是:根据当前项目环境自动注入合适的 Bean,不需要你手动写配置,能自动就自动,不能自动再手动。
更多推荐


所有评论(0)