Spring注解之-@ConditionalOnExpression表达式
@ConditionalOnExpression("'true")
当括号中的内容为true时,使用该注解的类被实例化,支持语法如下:
@ConditionalOnExpression("${mq.cumsumer.enabled}==1&&${rabbitmq.comsumer.enabled:true}")
@ConditionalOnExpression("'${mq.comsumer}'.equals('rabbitmq')")
@ConditionalOnExpression("'${application.customize}'.equals('EDGE')||${app.chain.enabled:'false'}")
我们需要“逻辑或”
- 首先一个类是不能标注多个相同annotation的,编译通不过。
@Order(1)
@Component
️@ConditionalOnProperty(name="app.initialize.dictionary", havingValue="true")
️@ConditionalOnProperty(name="app.initialize.all", havingValue="true")
public class DictionaryInitializer implements CommandLineRunner
- @ConditionalOnProperty 本身也并没有这样的功能
- 一种繁琐的做法,是自定义条件,继承AnyNestedCondition
class DicOrAllCondition extends AnyNestedCondition {
public DicOrAllCondition() {
super(ConfigurationPhase.PARSE_CONFIGURATION);
}
@ConditionalOnProperty(name = "app.initialize.dictionary", value = "true")
static class DicCondition {
}
@ConditionalOnProperty(name = "app.initialize.all", value = "true")
static class AllCondition {
}
}
@Order(1)
@Component
@Conditional(DicOrAllCondition.class)
public class DictionaryInitializer implements CommandLineRunner{}
- 还有一种比较灵活的方式是使用@ConditionalOnExpression写一个表达式
@Order(1)
@Component
@ConditionalOnExpression("${app.initialize.dictionary:false} || ${app.initialize.all:false}")
public class DictionaryInitializer implements CommandLineRunner{}
精益无止境,其实还有更灵活的配置方式:除了dictionary其他都导入:
app.initialize.all=true
app.initialize.dictionary=false
换种说法就是:如果局部有配置,则按局部配置处理。如果局部没配置,则按全局配置处理。如果全局、局部都没配置,则默认不导入。这里可以利用“默认值”嵌套表达式实现。
@ConditionalOnExpression("${app.initialize.dictionary:${app.initialize.all:false}}")
Spring注解之-@ConditionalOnExpression表达式的更多相关文章
- spring注解说明之Spring2.5 注解介绍(3.0通用)
spring注解说明之Spring2.5 注解介绍(3.0通用) 注册注解处理器 方式一:bean <bean class="org.springframework.beans.fac ...
- [转]Spring 注解总结
原文地址:http://blog.csdn.net/wangshfa/article/details/9712379 一 注解优点?注解解决了什么问题,为什么要使用注解? 二 注解的来龙去脉(历史) ...
- Spring 注解总结
声明:这是转载的.内容根据网上资料整理.相关链接:http://www.360doc.com/content/10/1118/16/2371584_70449913.shtmlhttp://www.i ...
- (转)Spring注解完成Bean的定义
使用Spring注解完成Bean的定义 2010-04-21 16:48:54| 分类: spring|举报|字号 订阅 下载LOFTER客户端 通过@Autowired或@Reso ...
- spring aop中pointcut表达式完整版
spring aop中pointcut表达式完整版 本文主要介绍spring aop中9种切入点表达式的写法 execute within this target args @target @with ...
- Spring 注解方式引入配置文件
配置文件,我以两种为例,一种是引入Spring的XML文件,另外一种是.properties的键值对文件: 一.引入Spring XML的注解是@ImportResource @Retention(R ...
- spring注解扫描组件注册
最近对单点系统进行微服务拆分,被各个springboot的组件注册搞得云里雾里的.(有的是通过springboot的自动配置进IOC容器的,有的是自己添加构造方法添加进IOC容器.)决定抽时间将spr ...
- Spring注解实现定时功能以及Quartz定时器
一:Spring注解实现--------->Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz 1:maven配置: <!-- quartz--> <d ...
- Spring注解驱动(上)
记录常用的spring注解 1.@Configuration 和 @Bean spring中可以使用xml 的方式进行配置, 也可以使用 @ Configuration 来指定一个类为配置类, 并使用 ...
- Spring注解开发系列Ⅵ --- AOP&事务
注解开发 --- AOP AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,横向重复,纵向抽取.详细的AO ...
随机推荐
- 什么是变量污染? let、const、var的区别?
变量污染就是全局变量滥用,造成报错,覆盖等问题:简单讲就是使用了相同的标识符声明了全局变量,var关键字声明相同的变量名会覆盖,let.const重复声明相同的变量名会直接报错: var 可以声明提升 ...
- 键盘事件 key keyCode
keyCode 8 = BackSpace BackSpace keyCode 9 = Tab Tab keyCode 12 = Clear keyCode 13 = Enter keyCode 16 ...
- 常见的mysql 函数 字符串函数
1. concat (s1,s2,....sn) 字符串拼接,将 s1,s2,... sn 拼接成一个字符串 : 2. lower(str) 将字符串全部转换成小写 3. upper(str) 将字符 ...
- 淘宝程序员没活硬整?在 Excel 和 VSCode 中购物!
大家好,我是程序员鱼皮,最近某宝网站的改进,属实是有点 "新" 了. 你敢相信这是一个购物网站么? 你可以在 Excel 表格中挑选商品进行购物,还原度极高,这两个图表更是点睛之笔 ...
- day07-数据类型及标识符
数据类型 强类型语言 要求变量的使用严格要严格符合规定,所有变量都必须先定义后才能使用 弱类型语言 java的数据类型分为两大类 基本类型(primitive type) 数值类型 整数类型 byte ...
- Oracle官方自动推荐大内存页脚本hugepages.sh
#!/bin/bash # # hugepages_settings.sh # # Linux bash script to compute values for the # recommended ...
- KubeSphere 社区双周报 | OpenFunction 支持 Dapr 状态管理 | 2023.03.31-04.13
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- KubeSphere 最佳实战:Kubernetes 部署集群模式 Nacos 实战指南
Nacos 是 Dynamic Naming and Configuration Service 的首字母简称,一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 是构建以服 ...
- OKR 目标和关键成果
OKR(Objectives and Key Results)是目标与关键成果管理法,是一套明确和跟踪目标及其完成情况的管理工具和方法.1.OKR首先是沟通工具:团队中的每个人都要写OKR,所有这些O ...
- CF#795 D - Max GEQ Sum O(n)做法
D - Max GEQ Sum input 3 4 -1 1 -1 2 5 -1 2 -3 2 -1 3 2 3 -1 output YES YES NO 题目大意:给你一个数组a,让你任意一个字段均 ...