早期我们曾使用 @Profile("!prepub")
控制预发环境不执行定时任务,后面又有需求需要让开发环境也不执行定时任务,于是将表达式改为了 @Profile("!dev & !prepub")
,随即发现环境控制不生效了,所有环境都在执行定时任务。然后我又测试了表达式 @Profile("daily | product")
, 发现也不生效,于是简单跟了下源码,在此简单记录。
首先根据 Profile (Spring Framework API) 的文档,我们知道:
A profile expression allows for more complicated profile logic to be expressed, for example “p1 & p2”. See Profiles.of(String…) for more details about supported formats.
即在配置中可以使用表达式,比如 p1 & p2
,在 Profiles (Spring Framework API) 中还给出了其他表达式的示例。