详解Spring Boot中@ConditionalOnProperty使用方法
目录
前言
如何使用
解析源码
总结
前言
在开发过程中,我们又没有发现我们添加配置文件后, 一些配置类便生效了,更改一些配置文件,这个配置类又不起作用了呢?比如s w a g g e r的a p i文档?一个false,一个true就能控制他是否生效?是不是很神奇?
这里我们所要说的@ C o nditional On Property就能够实现这一功能?想要了解具体如何实现,就跟这我一起来学习一下吧!
如何使用
/*** 计算耗时注解的实际计算过程方法*/
@ConditionalOnProperty(name = "aspect.flag",havingValue = "true")
@Aspect
@Component
public class CostTimeAspect {
这里可以看到两个属性,name和havingValue,具体是什么含义呢? name会查找我们的application.yml文件中对应的aspect.flag对应的值,然后拿到值和havingValue中的值做对比,当两者相等返回true,配置生效,当不一致返回false,则配置不生效。
注意,如果name为空则返回false,配置类也是不生效的!
解析源码
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {String[] value() default {};String prefix() default "";String[] name() default {};String havingValue() default "";boolean matchIfMissing() default false;}
数组value,获取对应的property名称的值,他和name属性不能够同时出现使用
配置属性名称的前缀prefix,比如spring.cloud
数组name,配置属性完整名称或者一部分名称。他可以和prefix组合使用,组成完整的配置属性名称。但是他不可以和数组value一起使用。
给定的值havingValue,他与数组name组合一起使用,比如获取的name属性值和havingValue给定的值是否相同,相同的结果才可以加载配置,否则不会加载配置。
matchIfMissing 表示缺少了该配置属性是否可以加载,如果为true,没有这一配置属性时也会正常加载;反过来就不会生效。
总结
以上总结了Conditional On Property的使用及源码解析,到这里就算完成了,希望对大家有所帮助!
欢迎大家关注我的公众号《coder练习生》
详解Spring Boot中@ConditionalOnProperty使用方法相关推荐
- java中的controller_详解Spring Boot中Controller用法
Controller Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果.他的重点就在于如何从 ...
- springboot初始化逻辑_详解Spring Boot中初始化资源的几种方式
假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看.今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回 ...
- 万字长文:详解 Spring Boot 中操作 ElasticSearch
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 超级小豆丁 来源 | http://www.m ...
- elasticsearch 客户端工具_万字长文:详解 Spring Boot 中操作 ElasticSearch
点击上方"小强的进阶之路",选择"星标"公众号 优质文章,及时送达 预计阅读时间: 15分钟 一.ElasticSearch 简介 1.简介 ElasticSe ...
- java按钮权限控制_详解Spring Security 中的四种权限控制方式
Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...
- 详解 | Spring Boot 最核心的 3 个注解详解
Hi !我是小小,开始本周的第一篇,本周第一篇内容是关于Spring Boot 最核心的三个注解,将会对这三个注解进行详细解释. 前言 Spring Boot 最大的特点是无需 XML 配置文件,能够 ...
- 详解Spring Boot框架中的@Conditional系列注解
目录 1. @Conditional 注解 2. Spring boot 扩展 1) @ConditionalOnClass和@ConditionalOnMissingClass注解 2) @Cond ...
- Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法
Spring 事务机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务. 结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷. ...
- springboot 扫描jar包中bean_详解Spring Boot的Component Scan原理
本文将帮助您了解Spring中最重要的概念 - 组件扫描.Spring Boot在组件扫描方面做了一些魔术 @ComponentScan 如果你了解组件扫描,你就会理解Spring.Spring是一个 ...
最新文章
- EM不同气候条件下土壤稀有与丰富微生物类群的分化策略
- html表单中的数据提交后清空,怎么实现小程序中表单提交后自动清空内容
- HDU 1715 大菲波数
- LeetCode Algorithm 118. 杨辉三角
- Linux系统巡检项目
- Django--Forms组件使用
- python日期格式转换_python中有关时间日期格式转换问题
- 查询数据库每天更新的数量
- 2015年创业中遇到的技术问题:141-150
- 力扣114. 二叉树展开为链表(C++,解释一下别人的思路)
- 51单片机入门教程(6)——外部中断
- 刚进职场的新人,这6点一定要牢记
- 模型加速——卷积通道裁剪的学习笔记
- 西门子200plc与英威腾GD变频器modbus通讯
- 让站长崩溃的骚操作,你中过招吗?
- 阿里巴巴java笔试
- Error attempting to get column 'state' from result set
- stm32 ADC hal库实现
- 杭电Oj刷题(2017)
- 函数fcntl的用法
热门文章
- 万能数据类型any杂谈
- 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
- Python_PyQuery模块打开本地文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 84
- 短波红外应用领域大揭秘-军事领域
- react native开发Android 篇——APP名称、图标、启动页
- Windows网络编程笔记
- 酷播v4.0免费播放器最新最简短代码范例
- SMSC2021 Day3Day4 部分题解
- 机器学习 之 感知机(Perceptron)
- wince开发经验汇总