详解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是一个 ...
最新文章
- Android Stadio 所有的窗口都没有了
- 网络编程应用:基于TCP协议【实现对象传输】--练习
- [渝粤教育] 东南大学 工程热力学 参考 资料
- 图形学opengl实验二-桌子的矩阵变换
- caffe的python接口学习(4):mnist实例---手写数字识别
- python模拟键盘操作_Python 模拟键盘鼠标操作详细教程
- android日期时间控件
- 计算机中缺失freeimage.dll,FreeImage.dll
- FU-A STAP-A
- python股票买卖问题_714. 买卖股票的最佳时机含手续费(Python)
- 短信平台系统 后台功能简介 网页版短信通道介绍 短信平台源代码搭建
- Python爬虫实例:爬取“查IPIP”查询结果,查询IP地址归属地
- Spring Boot 2.2.x Junit4 升级为Junit5 后的变化、对比 找不到 org.junit.jupiter.api.Test
- 在html中设置全局字体样式
- 46、建筑防烟排烟系统的维护保养要求
- 评分卡分箱原则及单调性
- 业务复习-微信登录/第三方登录实现
- 如何在Excel中调用Python脚本,实现数据自动化处理!
- [IOS APP]小豆子幽默丛书
- 关于手工制作PCB印刷电路板的镜像操作详解【干货】
热门文章
- rfid读写器的lbt算法为什么无法解决读写器网络中的隐藏终端的问题
- 自动售餐机深受顾客欢迎全过程只需2分钟
- Spring Boot 系统日志代码解析-立哥技术
- 基于微信的拍照花卉识别
- 福禄克FLUKE BT508|BT510|BT520|BT521蓄电池分析仪技术参数 与配件详情 报价分析
- Oracle Database介质及补丁下载地址列表
- DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(3/5)漫反射积分项
- 小米路由器4A千兆版 CH341A 编程器刷机教程
- 重庆北大青鸟【学员心声】:在反思性学习中获得成长 --J14班 万*同学
- 【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例