Skip to content

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 时生效
}

版权声明