目录

前言

如何使用

解析源码

总结


前言

在开发过程中,我们又没有发现我们添加配置文件后, 一些配置类便生效了,更改一些配置文件,这个配置类又不起作用了呢?比如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. EM不同气候条件下土壤稀有与丰富微生物类群的分化策略
  2. html表单中的数据提交后清空,怎么实现小程序中表单提交后自动清空内容
  3. HDU 1715 大菲波数
  4. LeetCode Algorithm 118. 杨辉三角
  5. Linux系统巡检项目
  6. Django--Forms组件使用
  7. python日期格式转换_python中有关时间日期格式转换问题
  8. 查询数据库每天更新的数量
  9. 2015年创业中遇到的技术问题:141-150
  10. 力扣114. 二叉树展开为链表(C++,解释一下别人的思路)
  11. 51单片机入门教程(6)——外部中断
  12. 刚进职场的新人,这6点一定要牢记
  13. 模型加速——卷积通道裁剪的学习笔记
  14. 西门子200plc与英威腾GD变频器modbus通讯
  15. 让站长崩溃的骚操作,你中过招吗?
  16. 阿里巴巴java笔试
  17. Error attempting to get column 'state' from result set
  18. stm32 ADC hal库实现
  19. 杭电Oj刷题(2017)
  20. 函数fcntl的用法

热门文章

  1. 万能数据类型any杂谈
  2. 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
  3. Python_PyQuery模块打开本地文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 84
  4. 短波红外应用领域大揭秘-军事领域
  5. react native开发Android 篇——APP名称、图标、启动页
  6. Windows网络编程笔记
  7. 酷播v4.0免费播放器最新最简短代码范例
  8. SMSC2021 Day3Day4 部分题解
  9. 机器学习 之 感知机(Perceptron)
  10. wince开发经验汇总