【发布时间】:2020-07-18 20:14:48
【问题描述】:
我有以下问题,我在 Spring Boot 中有一个包含 bean 的配置类,只有当具有值列表的某个属性包含某个值时,我才希望创建它。
现在配置类看起来像这样:
@ConditionalOnExpression("#{'${conditions.values.options}'.contains('ScenarioOne')}")
ConfigurationForScenarioOne{
@Bean
public StudentBean getStudentBean(){
...
}
}
在属性文件中我会有这样的东西:
conditions.values.options=${CONDITIONS_VALUES_OPTIONS}
然后在运行时提供CONDITIONS_VALUES_OPTIONS 的值,如下所示:
-DCONDITIONS_VALUES_OPTIONS=ScenarioOne,ScenarioTwo,ScenarioFive
我想要这样做的原因是能够部署应用程序并根据运行时给出的值使用不同的 bean。
我将创建几个配置类,这些配置类将根据传递的这些属性中的哪些属性来创建。
为了实现这一点,我试图依靠 Spring Expression 语言来执行以下操作:
1-读取属性conditions.values.options,然后将其转换为列表,然后验证列表是否包含所需的配置字符串。
到目前为止,我已经尝试了几种表达方式,包括:
@ConditionalOnExpression("#{'${conditions.values.options}'.contains('ScenarioOne')}")
和其他类似的表达方式,没有运气。有人可以帮我看看我在这里缺少什么吗?
【问题讨论】:
标签: java spring-boot spring-expression-language