`
y806839048
  • 浏览: 1147547 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

condationalon***的理解

阅读更多

 

总括:

oncondiotonal***(属性) -----符合匹配条件就加载,有多个判断标准相当于||符合一个即可 (属性)

 

@ConditionalOnClass:该注解的参数对应的类必须存在,否则不解析该注解修饰的配置类; (类)---类较为简单

@ConditionalOnMissingBean:该注解表示,如果存在它修饰的类的bean,则不需要再创建这个bean;可以给该注解传入参数例如

 @ConditionOnMissingBean(name = "example"),这个表示如果name为“example”的bean存在,这该注解修饰的代码块不执行。

 

 

 

1. spring boot ConditionalOnProperty 使用讲解

@Retention(RetentionPolicy.RUNTIME)  

@Target({ElementType.TYPE, ElementType.METHOD})  

@Documented  

@Conditional({OnPropertyCondition.class})  

public @interface ConditionalOnProperty {  

    String[] value() default {}; //数组,获取对应property名称的值,与name不可同时使用  

 

    String prefix() default "";//property名称的前缀,可有可无  

 

    String[] name() default {};//数组,property完整名称或部分名称(可与prefix组合使用,组成完整的property名称),与value不可同时使用  

 

    String havingValue() default "";//可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置  

 

    boolean matchIfMissing() default false;//缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错  

 

    boolean relaxedNames() default true;//是否可以松散匹配

}  

 

操作案例

案例1: 值必须匹配为123 才会有效

注意 : prefix 可以不用, 但是要写全部在name 上

@ConditionalOnProperty(prefix = "parentName",name = "sonName",havingValue = "123")  

.yml配置如下:  

parentName:  

      sonName: 123      //正常    

parentName:  

      sonName: 1234     //失败,与havingValue给定的值不一致  

 

案例2: 值必须匹配为123 才会有效, 并且可以yml 或者 properties 文件中不设置这个属性, 因为matchIfMissing 为true

@ConditionalOnProperty(prefix = "parentName",name = "sonName",havingValue = "123",matchIfMissing = true)  

// .yml配置如下:     

//不配置相关参数       //正常,当matchIfMissing = true时,即使没有该parentName.sonName属性也会加载正常 

 

案例3: 配置多个属性值, 并且属性值都是一样的情况下才有效

注意: 可以使用在判断两个配置属性都为为某个值的情况下使用, 比较方便,

parentName.sonName和parentName.flag的值都要与havingValue的一致才行

@ConditionalOnProperty(prefix = "parentName", name = {"sonName", "flag"}, havingValue = "123")

parentName:  

      sonName: 123  

      flag: 1234       //失败     

parentName:  

    sonName: 123  

    flag: 123        //正常  

parentName:  

    sonName: 123     //失败,缺少parentName.flag  

 

案例4: 配置多个属性值, 并且属性值都是一样的情况下才有效, 其中设置 matchIfMissing = true, 允许不在配置文件中出现

@ConditionalOnProperty(prefix = "parentName", name = {"sonName", "flag"}, havingValue = "123",matchIfMissing = true)

parentName:  

    sonName: 123     //正常     

 

// .yml配置如下:      

// 不配置相关参数      //正常    

 

2. ConditionalOnExpression 使用详解

Solution for Two Properties

@ConditionalOnExpression("${properties.first.property.enable:true} && ${properties.second.property.startServer:false}")

 

 

注意: 上述的英文解释, 来源于参考地址, 在下方 

Note the following: 

You need to using colon notation to indicate the default value of the property in the expression language statement

Each property is in a separate expression language block ${}

The && operator is used outside of the SpEL blocks

Solution for more then 2 properties

@ConditionalOnExpression("${properties.first.property.enable:true} " +

        "&& ${properties.second.property.enable:true} " +

        "&& ${properties.third.property.enable:true}")

 

 

注意: 原文解释, 的一些缺点。 

The drawback is that you cannot use a matchIfMissing argument as you would be able to when using the @ConditionalOnProperty annotation so you will have to ensure that the properties are present in the .properties or YAML files for all your profiles/environments or just rely on the default value

other so solution

@ConditionalOnExpression("'${com.property1}'.equals('${com.property2}')")

 

 

 

原文:https://blog.csdn.net/zhongzunfa/article/details/80392446 

 

 

 

分享到:
评论

相关推荐

    javaee电子商城系统课程设计样本.doc

    javaee电子商城系统课程设计样本.doc

    scratch少儿编程逻辑思维游戏源码-糖果大爆险.zip

    scratch少儿编程逻辑思维游戏源码-糖果大爆险.zip

    spring-boot-2.7.2.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    spring-boot-1.3.6.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    GIS安装施工综合方案.doc

    GIS安装施工综合方案.doc

    基于PHP+CSS+JS+MySQL的选题系统源码——B/S架构下多角色登录与权限管理

    内容概要:本文详细介绍了选题系统源码,涵盖PHP、CSS、JavaScript和MySQL四种核心技术。系统采用B/S架构,支持管理员、审核员、教师和学生四种身份登录,每种身份有独立的功能权限。文中提供了详细的环境搭建指南,如使用phpStudy和Navicat进行项目管理和数据库操作。此外,还展示了关键代码片段,如登录验证、权限管理、数据库设计以及界面优化方法。同时,针对性能优化提出了建议,如解决N+1查询问题的方法。 适合人群:适用于有一定编程基础,尤其是对PHP和Web开发感兴趣的开发者和技术爱好者。 使用场景及目标:① 学习并掌握B/S架构的应用开发流程;② 实践多角色登录和权限管理的具体实现;③ 提升Web应用的界面优化和用户体验;④ 掌握数据库设计和性能优化技巧。 其他说明:本文不仅提供了完整的代码示例,还包括了详细的开发文档和支持材料,帮助读者快速上手并深入理解整个项目的构建过程。

    scratch少儿编程逻辑思维游戏源码-下水道冒险猫.zip

    scratch少儿编程逻辑思维游戏源码-下水道冒险猫.zip

    scratch少儿编程逻辑思维游戏源码-下雨时向北的路.zip

    scratch少儿编程逻辑思维游戏源码-下雨时向北的路.zip

    三相下垂双逆变器同步并联控制技术的研究与应用

    内容概要:本文深入探讨了三相下垂双逆变器同步并联控制技术,重点介绍了下垂控制的基本原理及其在微电网中的应用。文章详细解释了下垂控制如何通过调整频率和电压幅值来实现负载的自动分配,并讨论了在多台逆变器并联时可能出现的环流问题以及解决方案,如虚拟阻抗法。此外,还介绍了同步环节的关键技术,特别是改进型锁相环的应用,并提供了具体的实现代码示例。最后,文章分享了一些实用的调试技巧和经验,强调了参数整定的重要性。 适用人群:从事电力电子、微电网控制领域的研究人员和技术人员。 使用场景及目标:适用于希望深入了解三相下垂双逆变器同步并联控制技术的工程师和科研人员,旨在帮助他们掌握核心技术,解决实际工程中的问题。 其他说明:文中提供的代码示例和调试方法有助于读者更好地理解和应用相关技术,提高系统的稳定性和性能。

    spring-data-redis-1.2.1.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    GEPLC机组自动化装置编程使用说明书.doc

    GEPLC机组自动化装置编程使用说明书.doc

    scratch少儿编程逻辑思维游戏源码-我的领土.zip

    scratch少儿编程逻辑思维游戏源码-我的领土.zip

    spring-boot-1.3.3.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-我的世界 MMO V1.6.zip

    scratch少儿编程逻辑思维游戏源码-我的世界 MMO V1.6.zip

    scratch少儿编程逻辑思维游戏源码-坦克(1).zip

    scratch少儿编程逻辑思维游戏源码-坦克(1).zip

    GSM移动通信网容量解决方案.doc

    GSM移动通信网容量解决方案.doc

    scratch少儿编程逻辑思维游戏源码-天台狂飙.zip

    scratch少儿编程逻辑思维游戏源码-天台狂飙.zip

    scratch少儿编程逻辑思维游戏源码-逃避猫 避险闯关游戏.zip

    scratch少儿编程逻辑思维游戏源码-逃避猫 避险闯关游戏.zip

    spring-boot-1.2.6.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    spring-data-redis-1.3.1.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

Global site tag (gtag.js) - Google Analytics