Давайте рассмотрим следующий тест:
@Test
public void testSameExpressionDifferentRootObjectClass() {
SpelParserConfiguration config = new SpelParserConfiguration(SpelCompilerMode.IMMEDIATE, Thread.currentThread().getContextClassLoader());
SpelExpressionParser parser = new SpelExpressionParser(config);
StandardEvaluationContext context = new StandardEvaluationContext();
Expression expr = parser.parseExpression("'Test: ' + #root");
assertThat(expr.getValue(context, 42L)).isEqualTo("Test: 42");
assertThat(expr.getValue(context, "string")).isEqualTo("Test: string");
assertThat(expr.getValue(context, 42L)).isEqualTo("Test: 42");
assertThat(expr.getValue(context, "string")).isEqualTo("Test: string");
}
Не удалось выполнить третье утверждение со следующим исключением:
org.springframework.expression.spel.SpelEvaluationException: EL1072E: Возникла исключительная ситуация при оценке скомпилированного выражения
в org.springframework.expression.spel.standard.SpelExpression.getValue (SpelExpression.java:328) в org.example.ExpressionTest.testSameExpressionDifferentRootOjrovrovTess (36):)
Причина: java.lang.ClassCastException: java.lang.Long не может быть приведен к java.lang.String в spel.Ex2.getValue (неизвестный источник) в org.springframework.expression.spel.standard.SpelExpression.getValue (SpelExpression.java:318) ... еще 31
Это неожиданно для меня и ничего не нашло в документации по этому ограничению.Я что-то здесь не так сделал?