【发布时间】:2017-09-15 08:41:49
【问题描述】:
我正在尝试基于应用程序属性配置一个 spring bean,我的最终目标在以下伪代码中描述:
if ${my.config}
<bean id="myBean" class="path.to.MyBeanImplOne" />
else
<bean id="myBean" class="path.to.MyBeanImplTwo" />
end
其中my.config 是一个布尔属性。
根据this SpEL 指南,#{${my.config} ? 'path.to.MyBeanImplOne' : 'path.to.MyBeanImplTwo'} 是一个有效的表达式,所以我尝试了以下配置:
<bean id="myBean" class="#{${my.config} ? 'path.to.MyBeanImplOne' : 'path.to.MyBeanImplTwo'}" />
但出现以下异常:
Expression parsing failed; nested exception is org.springframework.expression.spel.SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'lcurly({)'
我找不到用于访问用于 xml 配置的 SpEL 表达式中的属性的文档。是否仅在 Java 配置中支持?
我已经看到了许多针对我的问题提出的解决方案(其中一些在这个question 中)。我不想使用systemProperties,因为我觉得这种配置不应该被指定为运行参数,而且我觉得profiles 的使用对于这个特定的用例来说太过分了。
有人能够成功地完成我尝试过的事情吗?或者有人可以确认xml配置中是否确实不支持我尝试使用的语法。
【问题讨论】: