Я читаю справочные документы Spring 5.1.3, а Преобразование типов SpEL получает следующий пример кода:
class Simple {
public List<Boolean> booleanList = new ArrayList<Boolean>();
}
Simple simple = new Simple();
simple.booleanList.add(true);
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
// false is passed in here as a string. SpEL and the conversion service
// correctly recognize that it needs to be a Boolean and convert it
parser.parseExpression("booleanList[0]").setValue(context, simple, "false");
// b is false
Boolean b = simple.booleanList.get(0);
Он работает как упомянутые документы и изменяет значениесвойство, но в соответствии с Javadocs forReadOnlyDataBinding()
Создайте {@code SimpleEvaluationContext} для доступа только для чтения к общедоступным свойствам через {@link DataBindingPropertyAccessor}.
Shouldnли выражение SpEL только для чтения и не меняет значение свойства?