java - 如果 Activity 配置文件与正则表达式关键字匹配,如何有条件地在 Spring 中启用类?

标签 java spring spring-boot java-8 javabeans

我有一个 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/

相关文章:

Java 编程 - String 类和使用方法

java - eclipse调试 'source no found'

java - 亚洲语言中带年份的日期格式

java - 将 Spring AOP 应用于来自不同应用程序上下文的 bean

spring - 如何使用 Spring Cloud AWS 从 S3 删除文件?

java - 无法写入内容: failed to lazily initialize a collection of role using OpenEntityManagerInViewFilter

java - Spring Boot在不同环境下的部署

java - 组件调整大小方法被连续调用?

java - 使用 CommonsMultipartResolver (Spring 3) 上传文件时是否可以识别文件格式

java - Stormpath idSite 环境身份验证问题