我有一个 Spring Boot Controller ,我想仅在某些配置文件处于 Activity 状态时启用它。然而,我想使用正则表达式或其他方式来执行此操作,而不是对所有这些配置文件进行硬编码。
考虑这段代码
@Controller
@Profile("#{'spring.profiles.active' matches 'eu'}") // this line is not working
public class HomeController{
// ... removed other code for brevity
}
现在,我希望仅当 Activity 配置文件属于以下内容时才启用此 Controller :dev1_eu, dev2_eu, dev3_eu, qa1_eu, qa2_eu, qa3_eu, prod1_eu, prod2_eu, prod3_eu, test1_eu, test2_eu
<强>等等。 “Etc”是这里的关键字。我还有更多配置文件,其中都包含 eu
,并且我希望仅在此类 *eu*
配置文件中启用上述 Controller 。现在,拥有这么多配置文件是否是一个好的做法还有待争论,但假设这一点无法改变(即,配置文件的数量无法减少)。因为如果配置文件数量较少,我可能会这样做:
@Profile({"dev_eu","qa_eu","prod_eu"})
如何去做这件事呢?如果 @Profile 不是方法,还有哪些其他更清洁/简单的方法可以实现此目的?
最佳答案
您可以尝试@ConditionalOnExpression
@ConditionalOnExpression(value = "#{ '${spring.profiles.active}' matches 'pattern' }")
关于java - 如果 Activity 配置文件与正则表达式关键字匹配,如何有条件地在 Spring 中启用类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64580287/