目录

前言

如何使用

解析源码

总结


前言

在开发过程中,我们又没有发现我们添加配置文件后, 一些配置类便生效了,更改一些配置文件,这个配置类又不起作用了呢?比如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使用方法相关推荐

  1. java中的controller_详解Spring Boot中Controller用法

    Controller Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果.他的重点就在于如何从 ...

  2. springboot初始化逻辑_详解Spring Boot中初始化资源的几种方式

    假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看.今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回 ...

  3. 万字长文:详解 Spring Boot 中操作 ElasticSearch

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 超级小豆丁 来源 | http://www.m ...

  4. elasticsearch 客户端工具_万字长文:详解 Spring Boot 中操作 ElasticSearch

    点击上方"小强的进阶之路",选择"星标"公众号 优质文章,及时送达 预计阅读时间: 15分钟 一.ElasticSearch 简介 1.简介 ElasticSe ...

  5. java按钮权限控制_详解Spring Security 中的四种权限控制方式

    Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...

  6. 详解 | Spring Boot 最核心的 3 个注解详解

    Hi !我是小小,开始本周的第一篇,本周第一篇内容是关于Spring Boot 最核心的三个注解,将会对这三个注解进行详细解释. 前言 Spring Boot 最大的特点是无需 XML 配置文件,能够 ...

  7. 详解Spring Boot框架中的@Conditional系列注解

    目录 1. @Conditional 注解 2. Spring boot 扩展 1) @ConditionalOnClass和@ConditionalOnMissingClass注解 2) @Cond ...

  8. Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法

    Spring 事务机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.  结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷.    ...

  9. springboot 扫描jar包中bean_详解Spring Boot的Component Scan原理

    本文将帮助您了解Spring中最重要的概念 - 组件扫描.Spring Boot在组件扫描方面做了一些魔术 @ComponentScan 如果你了解组件扫描,你就会理解Spring.Spring是一个 ...

最新文章

  1. Android Stadio 所有的窗口都没有了
  2. 网络编程应用:基于TCP协议【实现对象传输】--练习
  3. [渝粤教育] 东南大学 工程热力学 参考 资料
  4. 图形学opengl实验二-桌子的矩阵变换
  5. caffe的python接口学习(4):mnist实例---手写数字识别
  6. python模拟键盘操作_Python 模拟键盘鼠标操作详细教程
  7. android日期时间控件
  8. 计算机中缺失freeimage.dll,FreeImage.dll
  9. FU-A STAP-A
  10. python股票买卖问题_714. 买卖股票的最佳时机含手续费(Python)
  11. 短信平台系统 后台功能简介 网页版短信通道介绍 短信平台源代码搭建
  12. Python爬虫实例:爬取“查IPIP”查询结果,查询IP地址归属地
  13. Spring Boot 2.2.x Junit4 升级为Junit5 后的变化、对比 找不到 org.junit.jupiter.api.Test
  14. 在html中设置全局字体样式
  15. 46、建筑防烟排烟系统的维护保养要求
  16. 评分卡分箱原则及单调性
  17. 业务复习-微信登录/第三方登录实现
  18. 如何在Excel中调用Python脚本,实现数据自动化处理!
  19. [IOS APP]小豆子幽默丛书
  20. 关于手工制作PCB印刷电路板的镜像操作详解【干货】

热门文章

  1. rfid读写器的lbt算法为什么无法解决读写器网络中的隐藏终端的问题
  2. 自动售餐机深受顾客欢迎全过程只需2分钟
  3. Spring Boot 系统日志代码解析-立哥技术
  4. 基于微信的拍照花卉识别
  5. 福禄克FLUKE BT508|BT510|BT520|BT521蓄电池分析仪技术参数 与配件详情 报价分析
  6. Oracle Database介质及补丁下载地址列表
  7. DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(3/5)漫反射积分项
  8. 小米路由器4A千兆版 CH341A 编程器刷机教程
  9. 重庆北大青鸟【学员心声】:在反思性学习中获得成长 --J14班 万*同学
  10. 【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例