SpelParseException:解析有效表达式后,表达式中还有更多数据:' lcurly({)'

时间:2018-04-08 03:51:44

标签: spring spring-el

我正在尝试使用@ConditionalOnExpression("not ${service.synchronous} && not ${service.disabled}")来创造一个组件。

我的基础是Spring Boot SpEL ConditionalOnExpression check multiple properties,它提供了一个多属性条件,如下所示:@ConditionalOnExpression("${properties.first.property.enable:true} && ${properties.second.property.startServer:false}")

然而,我一直在:

Caused by: org.springframework.expression.spel.SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'lcurly({)'

这些属性总是在我的.properties文件中设置,因此我没有使用冒号表示法提供默认值。我做错了什么?

2 个答案:

答案 0 :(得分:0)

在大多数此类情况下,您的应用正在阅读的属性并非您所期望的那样。

在SpelParseException的所有构造函数上设置断点。在调试器中,您将看到已解析的表达式,它将准确显示您正在使用的属性。

也许你必须在堆栈中搜索一下,直到找到可以看到表达式的正确位置。

答案 1 :(得分:0)

您将需要像后面的示例中那样为属性提供默认值,因此将表达式更新为:

@ConditionalOnExpression("not ${service.synchronous:false} && not ${service.disabled:true}")