Spring中的@ConditionalOnProperty注解详解

 更新时间:2024年01月18日 10:14:22   作者:岸河  
这篇文章主要介绍了Spring中的@ConditionalOnProperty注解详解,常见的@Conditionalxxx开头的注解我们称之为条件注解,常见的条件注解有,简单来讲,一般是在配置类上或者是@Bean修饰的方法上,添加此注解表示一个类是否要被Spring上下文加载,需要的朋友可以参考下

@ConditionalOnProperty注解

条件注解分类

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

常见的条件注解有

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

这几个注解通常会结合使用,一般都是在配置类中使用,SpringBoot各种xxxxAutoCconfiguration都用到了这些注解,这也是SpringBoot自动装配的重要工具。

简单来讲,一般是在配置类上或者是@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的值

假如没有配置这个name的配置

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

配置错误的havingValue的值

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

到此这篇关于Spring中的@ConditionalOnProperty注解详解的文章就介绍到这了,更多相关@ConditionalOnProperty注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot应用程序转换成WAR文件详解

    SpringBoot应用程序转换成WAR文件详解

    其实一般使用SpringBoot使用打成jar包比较省事的,但也有很多童鞋是习惯使用WAR包的,下面这篇文章主要给大家介绍了关于SpringBoot转换WAR的相关资料,需要的朋友可以参考下
    2022-11-11
  • Springboot的yml配置文件用法

    Springboot的yml配置文件用法

    这篇文章主要介绍了Springboot的yml配置文件用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot任务之定时任务相关知识总结

    SpringBoot任务之定时任务相关知识总结

    今天给大家整理的文章是SpringBoot定时任务的相关知识点,文中有非常详细的介绍及代码示例,对正在学习SpringBoot任务的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • springcloud实现注册中心Eureka

    springcloud实现注册中心Eureka

    这篇文章主要介绍了springcloud实现注册中心Eureka,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 基于springboot2集成jpa,创建dao的案例

    基于springboot2集成jpa,创建dao的案例

    这篇文章主要介绍了基于springboot2集成jpa,创建dao的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • IDEA 单元测试创建方法详解(2020.03版本亲测)

    IDEA 单元测试创建方法详解(2020.03版本亲测)

    这篇文章主要介绍了IDEA 单元测试创建方法详解(2020.03版本亲测),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • IDEA2020配置Git的方法步骤

    IDEA2020配置Git的方法步骤

    这篇文章主要介绍了IDEA2020配置Git的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Java object wait notify notifyAll代码解析

    Java object wait notify notifyAll代码解析

    这篇文章主要介绍了Java object wait notify notifyAll代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Java与kotlin详细对比

    Java与kotlin详细对比

    这篇文章主要介绍了Java与kotlin详细对比,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • SpringCloud hystrix服务降级概念介绍

    SpringCloud hystrix服务降级概念介绍

    什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作
    2022-09-09

最新评论