@ConditionalOnProperty注解

条件注解分类

常见的@Conditionalxxx开头的注解我们称之为条件注解,常见的条件注解有

  • class条件注解:@ConditionalOnClass
  • bean条件注解:@ConditionalOnBean
  • 属性条件注解:@ConditionalOnProperty

这几个注解通常会结合使用,一般都是在配置类中使用,SpringBoot各种xxxxAutoCconfiguration都用到了这些注解,这也是SpringBoot自动装配的重要工具。这篇博文主要说一下@ConditionalOnProperty属性条件注解。

简单来讲,一般是在配置类上或者是@Bean修饰的方法上,添加此注解表示一个类是否要被Spring上下文加载,若满足条件则加载,若不满足条件则不加载。

我们在application.properties中配置的各种配置,添加配置之后即生效,就是这么控制的。

主要说一下这个属性matchIfMissing,该属性为true时,配置文件中缺少对应的value或name的对应的属性值,也会注入成功。

app.name=tom

配置类为

@ConditionalOnProperty(prefix = "app",name="name",matchIfMissing =  false)
@Configuration
public class ConfigureOne {

    public ConfigureOne() {
        System.out.println("--------构造ConfigureOne---------");
    }
}
不配置havingValue的值

1.假如没有配置这个name的配置
1.1@ConditionalOnProperty(prefix = “app”,name=“name”,matchIfMissing = false)
假如没有配置这个name的配置,若matchIfMissing为false,则不会加载此配置类
假如配置了这个name的配置,若matchIfMissing为false,则会加载此配置类

1.2@ConditionalOnProperty(prefix = “app”,name=“name”,matchIfMissing = true)
假如没有配置这个name的配置,若matchIfMissing为true,则仍会加载此配置类
假如配置了这个name的配置,若matchIfMissing为true,则会加载此配置类
总结,若未配置havingValue的值,matchIfMissing为true则无论是否有配置都会加载配置类,matchIfMissing为false,有配置加载类,无配置不加载类。

配置错误的havingValue的值

2.1@ConditionalOnProperty(prefix = “app”,name=“name”,havingValue = “name1”,matchIfMissing = false)
假如配置了错误的name值,若matchIfMissing为false,配置类不会加载
假如配置了正确的name值,若matchIfMissing为false,配置类会加载

2.2@ConditionalOnProperty(prefix = “app”,name=“name”,havingValue = “name1”,matchIfMissing = true)
假如配置了错误的name值,若matchIfMissing为true,配置类不会加载
假如配置了正确的name值,若matchIfMissing为true,配置类会加载
总结,只要配置了正确的havingValue值,无论matchIfMissing怎么设置,都会加载,只要配置的havingValue值不正确,无论
matchIfMissing怎么设置,都不会加载。

  • 40
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值