Spring Expression Language,Spring语言表达式,是一个支持查询和操作运行时对象导航图功能的强大的表达式语言,它的语法类似于传统EL。创建的初衷是了给 Spring 社区提供一种简单而高效的表达式语言,一种可贯穿整个 Spring 产品组的语言。这种语言的特性应基于 Spring 产品的需求而设计。虽然SpEL引擎作为Spring组合里的表达式解析的基础,但它不直接依赖于Spring。
注解@Value中
//@Value能修饰成员变量和方法形参
//#{}内就是表达式的内容
@Value("#{表达式}")
public String arg;
XML配置
配置Bean
<bean id="xxx" class="com.java.XXXXX.xx">
<!-- 同@Value,#{}内是表达式的值,可放在property或constructor-arg内 -->
<property name="arg" value="#{表达式}">
</bean>
Expression
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression(input);
return expression.getValue().toString();
Spel使用ExpressionParser接口表示解析器。然后使用提供的parseExpression方法来解析相应的表达式为Expression对象,最后通过Expression#getValue方法根据上下文获取表达式的值
Spel表达式以#{开头,以}结尾
#{表达式}
以${开头,以}结尾表示属性名称引用
${ spring.user.name }
T(Type)运算符会调用类的作用域和方法,它返回的是一个对象,它可以帮助获取某个类的静态方法
T(全限定类名).方法名()
还支持通过new来实例化对象
new java.lang.ProcessBuilder(new String[]{"open", "-a", "Calculator"}).start()
其他类似于EL表达式
首先是实例化SpelExpressionParser解析器,指定配置对象

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