Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。
语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL。
-
SpEL 为 bean 的属性进行动态赋值提供了便利
字面量的表示:
<property name="test" value="#{5}"/>
<property name="test" value="#{3.14}"/>
<property name="test" value="#{1e4}"/>
<property name="test" value="#{'哈哈'}"/>或者<property name='test' value='#{"嘿嘿"}'/>
<property name="test" value="#{false}"/>
-
引用bean属性跟方法:
引用其他bean对象,等价于ref属性。
<property name="pet" value="#{pet1}"></property>
引用其他bean对象的属性。
<property name="pet" value="#{pet1.petName}"></property>
拿到方法的返回值。
<property name="name" value="pet1.toString()"></property>
链式调用。
<property name="name" value="pet1.toString().toUpperCase()"></property>
-
其他
- 算数运算符:+, -, *, /, %, ^:
- 加号还可以用作字符串连接:
- 比较运算符: <, >, ==, <=, >=, lt, gt, eq, le, ge
- 逻辑运算符号: and, or, not, |
- if-else 运算符:pet1.petName=='鹦鹉'?'学舌':'SB';
- 支持正则;
- 调用静态方法或静态属性:通过 T() 调用一个类的静态方法,它将返回一个 Class Object,然后再调用相应的方法或属性:
<property name="initValue" value="#{T(java.lang.Math).PI}"></property>