Spring中的@ConditionalOnProperty注解详解
作者:岸河
这篇文章主要介绍了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的配置
- @ConditionalOnProperty(prefix = “app”,name=“name”,matchIfMissing = false) 假如没有配置这个name的配置,若matchIfMissing为false,则不会加载此配置类 假如配置了这个name的配置,若matchIfMissing为false,则会加载此配置类
- @ConditionalOnProperty(prefix = “app”,name=“name”,matchIfMissing = true) 假如没有配置这个name的配置,若matchIfMissing为true,则仍会加载此配置类 假如配置了这个name的配置,若matchIfMissing为true,则会加载此配置类 总结,若未配置havingValue的值,matchIfMissing为true则无论是否有配置都会加载配置类,matchIfMissing为false,有配置加载类,无配置不加载类。
配置错误的havingValue的值
- @ConditionalOnProperty(prefix = “app”,name=“name”,havingValue = “name1”,matchIfMissing = false) 假如配置了错误的name值,若matchIfMissing为false,配置类不会加载 假如配置了正确的name值,若matchIfMissing为false,配置类会加载
- @ConditionalOnProperty(prefix = “app”,name=“name”,havingValue = “name1”,matchIfMissing = true) 假如配置了错误的name值,若matchIfMissing为true,配置类不会加载 假如配置了正确的name值,若matchIfMissing为true,配置类会加载 总结,只要配置了正确的havingValue值,无论matchIfMissing怎么设置,都会加载,只要配置的havingValue值不正确,无论 matchIfMissing怎么设置,都不会加载。
到此这篇关于Spring中的@ConditionalOnProperty注解详解的文章就介绍到这了,更多相关@ConditionalOnProperty注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!