JavaWeb——SpringBoot原理(5/7)-自动配置-原理分析-@Conditional(自动配置背后的核心机制、常见条件注解详解、@ConditionalOnClass)

目录

Spring Boot 自动配置中的条件装配机制

1. 条件注解作用概述

1.1 自动配置背后的核心机制

1.2 条件注解系列

2. 常见条件注解详解

2.1 @ConditionalOnMissingBean

2.2 @ConditionalOnClass

2.3 @ConditionalOnProperty

3. 条件注解在自动配置中的作用

3.1 实现“自动但可控”

3.2 示例

4. 条件注解与自动配置总结

5. 小结


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避免冲突,保留用户自定义空间
@ConditionalOnClassclasspath 中存在某类判断依赖是否存在
@ConditionalOnProperty指定属性是否开启配置开关

5. 小结

Spring Boot 通过条件注解机制:

  • 实现自动配置 Bean 的按需加载

  • 提供良好的扩展性与定制能力;

  • 支撑 Starter 模块在多环境、多依赖中的灵活组合。

下一节将通过案例深入了解如何自定义自动配置与条件装配。


END


学习自:黑马程序员——JavaWeb课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值