@ConditionalOnProperty
是 Spring Boot 提供的一个条件注解,用于根据配置文件中的属性值来决定是否创建某个 Bean 或启用某个配置。
注解参数说明
以下是 @ConditionalOnProperty
注解中常用参数的详细说明:
-
name
或value
:指定要检查的属性名。value
是name
的别名,两者不可同时使用。 -
havingValue
:指定属性应该具有的值。只有当配置文件中的属性值与此值相等时,相关的 Bean 才会被创建。 -
matchIfMissing
:当配置文件中没有指定的属性时,是否应该创建相关的 Bean。默认值为false
,即属性缺失时不创建 Bean。
示例说明
以注解 @ConditionalOnProperty(name = "qbiz.task.enabled", havingValue = "true", matchIfMissing = true)
为例:
-
name = "qbiz.task.enabled"
:检查配置文件中是否存在名为qbiz.task.enabled
的属性。 -
havingValue = "true"
:只有当qbiz.task.enabled
的值为"true"
时,相关的 Bean 才会被创建。 -
matchIfMissing = true
:如果配置文件中没有指定qbiz.task.enabled
属性,也会创建相关的 Bean。
因此,在以下两种情况下,相关的 Bean 都会被创建:
-
配置文件中设置了
qbiz.task.enabled=true
。 -
配置文件中没有设置
qbiz.task.enabled
属性。
只有当配置文件中设置了 qbiz.task.enabled=false
时,相关的 Bean 才不会被创建。
使用场景
@ConditionalOnProperty
注解常用于以下场景:
-
功能开关:根据配置文件中的属性值来启用或禁用某些功能模块。
-
环境配置:在不同的环境中,根据配置文件中的属性值来加载不同的 Bean 或配置。
-
模块化开发:在模块化开发中,根据配置文件中的属性值来决定是否加载某个模块。
通过合理使用 @ConditionalOnProperty
注解,可以使应用程序的配置更加灵活,便于在不同的环境中进行部署和管理。