目录
Spring Boot 自动配置中的条件装配机制
1. 条件注解作用概述
1.1 自动配置背后的核心机制
Spring Boot 实现自动配置的关键是条件装配。即在满足某些前提条件下,自动注册 Bean 到 IOC 容器。
1.2 条件注解系列
Spring Boot 提供了一系列以 @Conditional 开头的注解,用于控制 Bean 是否注册。
2. 常见条件注解详解
2.1 @ConditionalOnMissingBean
-
含义:当容器中不存在指定类型或名称的 Bean时才生效
-
应用场景:允许用户自定义同类型 Bean,避免重复注册
@Bean
@ConditionalOnMissingBean //不存在该类型的bean,才会将该bean加入IOC容器中---指定类型(value属性)或名称(name属性)
public Gson gson() {
return new GsonBuilder().create();
}
2.2 @ConditionalOnClass
-
含义:当 classpath 中存在指定类时生效
-
常用于:判断某个依赖是否存在,再决定是否加载相关配置类
@Bean
@ConditionalOnClass(name= "io.jsonwebtoken,Jwts") //环境中存在指定的这个类,才会将该bean加入IOC容器中
public HeaderParser headerParser(){
return new HeaderParser();
}
2.3 @ConditionalOnProperty
-
含义:根据配置文件中的属性值决定是否生效
-
常用于:控制某项配置开关
application.yml文件:
name: qiyi
@Bean
@ConditionalOnProperty(name = "name",havingValue = "qiyi") //配置文件中存在指定的属性与值,才会将该bean加入IOC容器中
public HeaderParser headerParser(){
return new HeaderParser();
}
3. 条件注解在自动配置中的作用
3.1 实现“自动但可控”
-
所有自动配置类中的
@Bean方法几乎都结合了条件注解 -
避免与用户自定义配置冲突
-
提供灵活性与覆盖能力
3.2 示例



4. 条件注解与自动配置总结
| 注解名称 | 触发条件 | 常见用途 |
|---|---|---|
@ConditionalOnMissingBean | 容器中无指定类型 Bean | 避免冲突,保留用户自定义空间 |
@ConditionalOnClass | classpath 中存在某类 | 判断依赖是否存在 |
@ConditionalOnProperty | 指定属性是否开启 | 配置开关 |
5. 小结
Spring Boot 通过条件注解机制:
-
实现自动配置 Bean 的按需加载;
-
提供良好的扩展性与定制能力;
-
支撑 Starter 模块在多环境、多依赖中的灵活组合。
下一节将通过案例深入了解如何自定义自动配置与条件装配。
END
学习自:黑马程序员——JavaWeb课程
&spm=1001.2101.3001.5002&articleId=147979632&d=1&t=3&u=6cd37fedbd4449d0bad4e00ef6ef3ccc)
1333

被折叠的 条评论
为什么被折叠?



