MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Spring Boot 条件注解(@Conditional)

2025-02-24 16:38 huorong 精选文章 1 ℃ 0 评论

Spring Boot 中的条件注解 (@Conditional) 是一个核心特性,它允许开发者根据特定条件来决定是否创建某个 Bean 或者执行某个配置。@Conditional 注解可以用于类或者方法上,当给定的条件满足时,相关的配置才会生效。

下面是一些常用的条件注解及其用法:

@Conditional

这是一个基础的条件注解,它需要一个 Condition 接口的实现类,当这个实现类的 matches 方法返回 true 时,被注解的组件才会被创建。

@Configuration
public class MyConfig {

    @Bean
    @Conditional(MyCondition.class)
    public MyBean myBean() {
        return new MyBean();
    }
}

public class MyCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        // 实现条件判断逻辑
        return true; // 或者 false
    }
}

@ConditionalOnBean

当指定的 Bean 在 Spring 容器中存在时,被注解的组件才会被创建。

@Bean
@ConditionalOnBean(name = "otherBean")
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnMissingBean

当指定的 Bean 在 Spring 容器中不存在时,被注解的组件才会被创建。

@Bean
@ConditionalOnMissingBean
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnClass

当指定的类在类路径上存在时,被注解的组件才会被创建。

@Bean
@ConditionalOnClass(name = "com.example.ExternalService")
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnMissingClass

当指定的类在类路径上不存在时,被注解的组件才会被创建。

@Bean
@ConditionalOnMissingClass("com.example.ExternalService")
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnProperty

当指定的配置属性满足特定条件时,被注解的组件才会被创建。

@Bean
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnResource

当指定的资源存在于类路径上时,被注解的组件才会被创建。

@Bean
@ConditionalOnResource(resources = "classpath:config/myconfig.properties")
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnWebApplication

当应用是 Web 应用时,被注解的组件才会被创建。

@Bean
@ConditionalOnWebApplication
public MyBean myBean() {
    return new MyBean();
}

@ConditionalOnNotWebApplication

当应用不是 Web 应用时,被注解的组件才会被创建。

@Bean
@ConditionalOnNotWebApplication
public MyBean myBean() {
    return new MyBean();
}

这些条件注解使得 Spring Boot 的配置更加灵活和强大,可以根据不同的环境或条件来定制化配置。

Tags:conditionalonproperty

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言