`
y806839048
  • 浏览: 1118113 次
  • 性别: 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 

 

 

 

分享到:
评论

相关推荐

    用excel制作排序动画算法vba源码

    用excel制作排序动画算法vba源码

    ACM、NOI 和 CSP 比赛的经验,基本背景介绍

    ACM、NOI 和 CSP 比赛的经验,基本背景介绍

    高分springboot毕设+vue候鸟监测数据管理系统-Java源码.zip

    本项目是一个基于Spring Boot和Vue.js的候鸟监测数据管理系统,旨在提供一个高效、便捷的平台,用于收集、存储、分析和展示候鸟迁徙数据。项目的主要功能包括实时数据采集、数据分析、数据可视化以及用户管理。通过使用Spring Boot框架,后端实现了强大的数据处理能力和稳定的API服务,确保了系统的高性能和高可用性。前端则采用Vue.js框架,提供了友好的用户界面和流畅的用户体验。 系统能够实时接收来自不同监测点的数据,并通过大数据分析技术,自动识别候鸟的种类和迁徙路径。数据分析模块还提供了多种统计图表,帮助研究人员直观地理解数据背后的趋势和模式。此外,系统还具备用户权限管理功能,确保不同级别的用户只能访问相应的功能和数据。 开发此项目的目的是为了满足学术研究和实际应用的需求,同时为计算机相关专业的学生提供一个完整的实战案例,帮助他们更好地理解和应用现代软件开发技术。

    智慧餐厅点餐管理系统ssm.zip

    基于SSM的毕业设计源码

    基于java的网上报名系统SSM.zip

    基于SSM的毕业设计源码

    校园短期闲置资源置换平台--论文.zip

    基于SSM的毕业设计源码

    金华学校社团管理系统的开发与实现ssm.zip

    基于SSM的毕业设计源码

    图像对抗样本检测综述,图像对抗样本检测综述

    图像对抗样本检测综述

    就业信息管理系统.zip

    基于springboot的毕业设计源码

    技术资料分享STM32F102x8B-DS-CH-V2很好的技术资料.zip

    技术资料分享STM32F102x8B_DS_CH_V2很好的技术资料.zip

    技术资料分享sd卡协议(物理层)很好的技术资料.zip

    技术资料分享sd卡协议(物理层)很好的技术资料.zip

    ssm员工在线知识培训考试平台.zip

    基于SSM的毕业设计源码

    解决 pip 安装过程中出现的SyntaxError invalid syntax错误技巧

    内容概要:当遇到‘pip install xxx’命令时出现 SyntaxError: invalid syntax 错误时,文中总结了多个可能的原因以及解决方案,包括确认命令执行环境、Python 与 pip 版本一致性检查、正确安装 pip、确保命令格式无误、使用虚拟环境规避版本冲突、合理使用代理与镜像源加快下载等问题。 适合人群:适用于有一定 Python 开发经验,尤其是经常需要利用 pip 安装外部库的技术工作者。 使用场景及目标:旨在帮助开发者快速诊断并修复在 pip 安装过程中可能出现的各种 SyntaxError 类型的异常,提高工作效率和项目稳定性。 其他说明:文档还提供了几个典型的报错实例及其对应的解决策略,有助于深入理解常见问题背后的具体机制。同时强调,在解决问题前要先排除自身操作失误的可能性,比如是否不小心在 Python 解释器内部运行了本来应当在外壳命令行下执行的操作等基本常识点也是不可忽视的重要方面。

    Mysql高可用部署文档+Mysql安装包

    mysql安装

    map_mode_escape_1.28.13.12700.pak

    map_mode_escape_1.28.13.12700.pak

    基于springboot+mybatis+mysql+redis实现购物商城前后台管理系统【含源码+数据库】

    一、系统说明 基于springboot开发的轻量级单体架构购物商城网站,并分为用户、商户、后台三大模块。基于springboot开发的轻量级单体架构购物商城网站,并分为用户、商户、后台三大模块。 用户模块能够进行商品搜索浏览、在线下单、微信支付等功能; 商户模块则可以对收益情况以及订单成交情况进行查看、并且可对商品进行上下架和增加删除等操作; 后台模块可进行群发消息通知、RBAC权限管理、商户的停用启用以及商城的广告海报设置等功能 二、功能描述 1、前台模块 登录页面 商城主页 我的账户 系统消息 购买记录 购物车 商品详情 店铺页面 搜索结果 下单页面 支付页面 商户主页 店铺相关 商品相关 优惠相关 会员相关 订单相关 2、后台模块 登录页面 后台主页 广告设置 订单列表 商户相关 会员相关 权限管理等

    macOS_Sequoia_15.1.password(imacos.top).rdr.split.019

    macOS_Sequoia_15.1.password(imacos.top).rdr.split.019

    MySQL 5.7从入门到精通 第20章 MySQL管理利器——MySQL Utilities 共5页.pptx

    【课程大纲】 第1章 初始MySQL 共19页.pptx 第2章 MySQL的安装与配置 共14页.pptx 第3章 数据库的基本操作 共11页.pptx 第4章 数据表的基本操作 共26页.pptx 第5章 数据类型和运算符 共17页.pptx 第6章 MySQL函数 共76页.pptx 第7章 查询数据 共48页.pptx 第8章 插入、更新与删除数据 共10页.pptx 第9章 索引 共11页.pptx 第10章 存储过程和函数 共19页.pptx 第11章 视图 共20页.pptx 第12章 触发器 共11页.pptx 第13章 用户管理 共25页.pptx 第14章 数据备份与还原 共21页.pptx 第15章 MySQL日志 共22页.pptx 第16章 性能优化 共18页.pptx 第17章 MySQL Workbench5.2 的使用 共15页.pptx 第18章 MySQL Replication 共27页.pptx 第19章 MySQL Cluster 共49页.pptx 第20章 MySQL管理利器——MySQL Utilities 共5页.pptx 第21章 读写分离的利器——MySQL Proxy 共5页.pptx 第22章 PHP操作MySQL数据库 共7页.pptx 第23章 新闻发布系统数据库设计 共6页.pptx 第24章 论坛管理系统数据库设计 共6页.pptx

    HBase 安装与基本操作指南

    内容概要:本文档详述了HBase的安装流程及基本操作方法,涵盖安装的前提条件、具体步骤和常用数据处理操作,帮助开发者理解和掌握HBase的使用技巧。 适合人群:对NoSQL数据库感兴趣的软件开发者和技术爱好者。 使用场景及目标:适用于希望部署个人开发测试环境,或在小规模生产环境中采用HBase作为数据存储解决方案的技术人员。 其他说明:文档不仅介绍了如何安装配置HBase,还展示了HBase命令行界面的基本操作,如创建、插入、检索、更新和删除记录等功能。

    高分springboot毕设+vue家政预约平台的设计与实现-Java源码.zip

    本项目是一个基于Spring Boot和Vue的家政预约平台设计与实现,旨在提供一个高效、便捷的家政服务预约系统。项目的主要目标是通过现代化的技术手段,优化家政服务的预约流程,提升用户体验,并为家政服务提供者提供一个管理订单和客户信息的有效工具。 在功能方面,该平台允许用户浏览不同类型的家政服务,如保洁、月嫂、家教等,并根据需求进行在线预约。系统支持用户注册与登录,个性化服务推荐,以及预约确认和支付功能。此外,家政服务提供者可以通过后台管理系统查看和处理预约请求,管理个人信息和服务介绍。 技术实现上,后端采用Spring Boot框架,确保系统的稳定性和高效性,前端则使用Vue.js构建用户友好的界面。这种前后端分离的架构设计不仅提高了开发效率,也便于系统的维护和升级。 本项目的开发不仅是为了完成一项毕业设计,更是为了通过实际操作加深对Java及相关Web开发技术的理解,适合计算机相关专业学生及Java学习者作为实战练习的项目。

Global site tag (gtag.js) - Google Analytics