@ConditionalOnProperty

该注解是 Spring Boot 提供的条件装配注解,用于根据配置文件属性动态控制组件加载。具体解析如下:

 

一、注解参数解析
prefix
配置属性的前缀,与 name 组合形成完整属性键(如 component.ChatKnowledgesTaskSchedule)。

name
配置属性名(支持数组),与 prefix 拼接后从配置文件中读取值。
示例:name = {"ChatKnowledgesTaskSchedule"} → 检查 component.ChatKnowledgesTaskSchedule 属性。

havingValue
属性值的匹配条件,默认为非 false。当前配置要求属性值必须为 "true"。
特殊规则:支持宽松匹配("on"/"yes" 等效于 "true")。

matchIfMissing(未显式设置)
默认为 false,表示若配置文件中缺失该属性,则条件不成立。

二、生效条件

当前注解的生效需同时满足:

  1. 配置文件中存在 component.ChatKnowledgesTaskSchedule=true(或等效值如 "on")。
  2. 若未配置该属性,则注解修饰的组件不会加载(因 matchIfMissing=false)。

三、典型应用场景

1. 功能开关控制

# application.properties
component.ChatKnowledgesTaskSchedule=true

当值为 true 时,注解修饰的 @Bean 或 @Configuration 类才会被实例化

2. 模块化装配

常用于按需加载定时任务、第三方服务集成等模块。

 

四、对比其他条件注解

image

 

五、配置缺失时的行为

若未配置 component.ChatKnowledgesTaskSchedule 属性:

  • 由于 matchIfMissing=false(默认),相关组件不会加载。
  • 若需缺省加载,需显式设置 matchIfMissing=true

 

引用链接:
1.@ConditionalOnProperty - CSDN博客
2.Spring Boot 条件注解:@ConditionalOnProperty 完全解析 - CSDN博客
3.SpringBoot基础篇Bean之条件注入@ConditionalOnProperty - 腾讯云
4.SpringBoot @ConditionalOnProperty注解详解 - 掘金开发者社区
5.SpringBoot——@ConditionalOnProperty和@ConditionalOnProperty注解的详解和使用 - 51CTO博客
6.@ConditionalOnProperty使用详解 - 51CTO博客
7.Spring 中的 @ConditionalOnProperty 注解 - 掘金开发者社区
8.ConditionalOnProperty注解的作用和使用方式 - 脚本之家
9.[java漫谈系列170]@ConditionalOnProperty注解根据配置控制bean的注入 - 哔哩哔哩
10.【springBoot2.7】@ConditionalOnProperty条件注解的底层实现分析 - 哔哩哔哩
11.@ConditionalOnProperty 详解 - CSDN博客
12.@ConditionalOnProperty注解理解 - CSDN博客
13.Spring中的@ConditionalOnProperty作用和用法详解 - 脚本之家
14.@Conditional注解使用及@ConditionalOnXXX各注解的作用 - 博客园
15.关于@ConditionalOnProperty的作用及用法说明 - 脚本之家
16.@ConditionalOnProperty 用法 - 掘金开发者社区
17.@Conditional - 博客园
18.SpringBoot的@Conditional条件注解详解 - 脚本之家
19.@Conditional 相关注解 - 博客园
20.SpringBoot之条件注解 - Aaron Zhu
21.@Conditional注解 - 博客园
22.使用@ConditionalOnProperty时构造函数的参数0 - 腾讯云

posted @ 2025-12-09 10:05  ConfidentLiu  阅读(13)  评论(0)    收藏  举报