带有OR语句的Spring @ConditionalOnExpression

时间:2017-08-17 13:44:36

标签: java spring annotations

我有一个@ConditionalOnExpression,它使用了我的application.properties中的属性。我希望@ConditionalOnExpression使用OR条件,以便在该属性中有三个不同的值存在时触发它。

@ConditionalOnExpression("'${env.name}'=='prod' or '${env.name}' == 'alsoProd'")

我似乎无法让这个工作。那么,甚至可以在@ConditionalOnExpression ??

中使用OR语句

3 个答案:

答案 0 :(得分:1)

Spring Expression Language(SpEL)允许定义列表。

当您两次比较相同的值时,您只需定义一个列表,然后检查环境名称是否在该列表中即可。

@ConditionalOnExpression("{'prod', 'alsoProd'}.contains('${env.name}')")

答案 1 :(得分:0)

试试这个

@ConditionalOnExpression("'${env.name}'=='prod'", "'${env.name}' == 'alsoProd'")

答案 2 :(得分:0)

您问题中的示例应正常运行,并且在Spring的文档https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions-operators-logical中有效。

您确定它不起作用吗?