我正在阅读Spring 5.1.3参考文档,SpEL Type Conversion得到了以下示例代码:
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}只读访问公共属性。
SpEL表达式不是只读的,并且不更改属性值吗?
答案 0 :(得分:0)
该字段的内容是可变的,但该字段本身是不可变的。
即您不允许将booleanList
替换为新数组,但不能阻止现有数组的内容发生突变。