Conditional注解

Conditional 注解
一、作用

定义某个条件,只有当条件满足时配置才起作用

二、自定义条件
public class MyConditional implements Condition {
    @Override
    public boolean matches(ConditionContext context,AnnotatedTypeMetadata metadata) {
        if(xxx条件) {
            return true;
        }
        return false;
    }
}

在需要条件的地方例如 Service 中

@Conditional(MyConditional.class)
@Service
public class Service {
    public void do() {
        //do something
    }
}

这时,若 “xxx条件”没有满足,则 Service 不会作为一个 Bean 被创建和注册。可以定义多个 Condition ,使用 @Conditional(xxx.class,xxx2.class) ,同时返回 ture 才会进行 Bean 的注册和创建,判断从前往后按顺序执行。

三、 自动化配置中的条件化注解
条件化注解配置生效条件
@ConditionalOnBean配置类某个特定的 Bean
@ConditionalOnMissingBean没有配置特定的 Bean
@ConditionalOnClassClasspath 里有指定的类
@ConditionalOnMissingClassClasspath 里没有指定的类
@ConditionalOnExpression给定的 Spring Expression Language(SpEL) 表达式计算结果为true
@ConditionalOnJavaJava 的版本匹配特定值或一个范围值
@ConditionalOnJndi参数中给定的 JNDI 位置必须存在一个,如果没有给参数,则要有 JNDI InitialContext
@ConditionalOnProperty指定的配置属性要有一个明确的值
@ConditionalOnResourceClasspath 里有指定的资源
@ConditionalOnWebApplication这是一个 Web 应用程序
tionalOnWebApplication这是一个 Web 应用程序
@ConditionalOnNotWebApplication这不是一个 Web 应用程序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值