ConditionalOnBooleanProperty
这个注解是 Spring Boot 3.5.0 中引入的新注解, 用于基于布尔属性值的条件配置。它的作用和与 @ConditionalOnProperty 的区别:
作用
@ConditionalOnBooleanProperty 专门用于检查配置属性的布尔值,简化了布尔属性的条件判断:
java
// 当 feature.enabled 为 true 时生效
@ConditionalOnBooleanProperty(prefix = "feature", name = "enabled")
@Configuration
public class FeatureConfiguration {
// 配置类
}
// 当多个属性都为 true 时生效
@ConditionalOnBooleanProperty(prefix = "app", name = {"feature-a", "feature-b"})
@Configuration
public class MultiFeatureConfiguration {
// 配置类
}与 @ConditionalOnProperty 的区别
1. 专门化布尔值处理
java
// 使用 @ConditionalOnProperty(旧方式)
@ConditionalOnProperty(prefix = "feature", name = "enabled", havingValue = "true", matchIfMissing = false)
// 使用 @ConditionalOnBooleanProperty(新方式)
@ConditionalOnBooleanProperty(prefix = "feature", name = "enabled")2. 默认值不同
@ConditionalOnBooleanProperty:
- havingValue() 默认为 true
- 专门处理布尔值,更语义化
@ConditionalOnProperty:
- havingValue() 默认为空字符串
- 可以处理任意字符串值
3.重复注解支持
@ConditionalOnBooleanProperty 使用了 @Repeatable(ConditionalOnBooleanProperties.class),支持重复注解:
java
@ConditionalOnBooleanProperty(prefix = "feature", name = "a")
@ConditionalOnBooleanProperty(prefix = "feature", name = "b")
@Configuration
public class CombinedFeatureConfig {
// 当 feature.a 和 feature.b 都为 true 时生效
}