参考:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/expressions.html
1. 什么是SpEL
The Spring Expression Language (SpEL for short) is a powerful expression language that supports querying and manipulating an object graph at runtime
SpEL是一种表达式语言,支持在运行时查询、操作对象图。这里不太理解对象图是什么意思,简单来讲说SpEL可以操作各种对象的数据和方法吧
和JSP页面上的EL表达式、Struts2中用到的OGNL表达式一样,SpEL根据JavaBean风格的getXxx()、setXxx()方法定义的属性访问对象图,完全符合我们熟悉的操作习惯
基本语法:SpEL使用#{…}作为定界符,所有在大框号中的字符都将被认为是SpEL表达式
2. 功能概览
| 英文 | 中文 |
|---|---|
| Literal expressions | 字面值表达式 |
| Boolean and relational operators | 布尔和关系操作符 |
| Regular expressions | 正则表达式 |
| Class expressions | 类表达式 |
| Accessing properties, arrays, lists, maps | 访问properties、arrays、lists、maps |
| Method invocation | 方法调用 |
| Relational operators | 关系操作符 |
| Assignment | 赋值 |
| Calling constructors | 调用构造器 |
| Bean references | bean引用 |
| Array construction | 构建数组 |
| Inline lists | 内联lists |
| Inline maps | 内联maps |
| Ternary operator | 三元操作符 |
| Variables | 变量 |
| User defined functions | 用户定义的功能 |
| Collection projection | 集合投影 |
| Collection selection | 集合选择 |
| Templated expressions | 模板化表达式 |
运算符
- 算术运算符:+、-、*、/、%、^
- 字符串连接:+
- 比较运算符:<、>、==、<=、>=、lt、gt、eq、le、ge
- 逻辑运算符:and, or, not, |
- 三目运算符:判断条件?判断结果为true时的取值:判断结果为false时的取值
- 正则表达式:matches
3. 字面值表达式
整数
1 | <property name="count" value="#{5}"/> |
浮点数
1 | <property name="point" value="#{89.7}"/> |
科学计数法
1 | <property name="capacity" value="#{1e4}"/> |
字符串,可以用单引号或者双引号作为定界符号
1 | <property name=“name” value="#{'Chuck'}"/> |
布尔
1 | <property name="enabled" value="#{false}"/> |
4. 引用Bean组件
4.1. 引用其它Bean组件
1 | <bean id="car" class="bean.Car"> |
4.2. 引用其它Bean组件的属性
1 | <bean id="car" class="bean.Car"> |
4.3. 调用其它Bean组件的方法
1 | <bean id="car" class="bean.Car"> |
5. 调用静态方法
语法:#{T(类全名).静态方法()}
1 | <bean id="person" class="bean.Person"> |