如果活动概要文件与regex关键字匹配,如何在Spring中有条件地启用类



我有一个Spring Boot控制器,我只想在某些配置文件处于活动状态时启用它。然而,我不想对所有这些配置文件进行硬编码,而是想使用regex或其他方式来实现这一点。

考虑一下这段代码

@Controller
@Profile("#{'spring.profiles.active' matches 'eu'}") // this line is not working
public class HomeController{
// ... removed other code for brevity
}

现在,我希望只有当活动配置文件属于以下类型时才启用此控制器:dev1_eu, dev2_eu, dev3_eu, qa1_eu, qa2_eu, qa3_eu, prod1_eu, prod2_eu, prod3_eu, test1_eu, test2_euetc">Etc";是此处的关键字。我有更多的配置文件,其中都有eu,我希望上面的控制器只在这样的*eu*配置文件中启用。现在,拥有这么多配置文件是否是一种好的做法还有待商榷,但假设这是不能改变的(即,配置文件的数量不能减少(。因为如果配置文件的数量更少,我可能会做这样的事情:

@Profile({"dev_eu","qa_eu","prod_eu"})

一个人会怎么做呢?如果@Profile不是办法,还有什么更干净/简单的方法可以实现这一点?

您可以尝试@ConditionalOnExpression

@ConditionalOnExpression(value = "#{ '${spring.profiles.active}' matches 'pattern' }")

最新更新