概述

Spring Expression Language,Spring语言表达式,是一个支持查询和操作运行时对象导航图功能的强大的表达式语言,它的语法类似于传统EL。创建的初衷是了给 Spring 社区提供一种简单而高效的表达式语言,一种可贯穿整个 Spring 产品组的语言。这种语言的特性应基于 Spring 产品的需求而设计。虽然SpEL引擎作为Spring组合里的表达式解析的基础,但它不直接依赖于Spring。

用法

语法

Spel表达式以#{开头,以}结尾

#{表达式}

${开头,以}结尾表示属性名称引用

${ spring.user.name }

T(Type)运算符会调用类的作用域和方法,它返回的是一个对象,它可以帮助获取某个类的静态方法

T(全限定类名).方法名()

还支持通过new来实例化对象

new java.lang.ProcessBuilder(new String[]{"open", "-a", "Calculator"}).start()

其他类似于EL表达式

源码分析

首先是实例化SpelExpressionParser解析器,指定配置对象

Untitled

随后通过输入,生成指定的Expression对象,这调用的是父类TemplateAwareExpressionParser#parseExpression方法