Spring表达式语言(SpEL)
Spring Expression Language(简称“SpEL”)是一种强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法与Jakarta Expression Language类似,但提供了额外的功能,最显著的是方法调用和基本的字符串模板功能。
虽然还有其他几种Java表达式语言可供选择,例如OGNL、MVEL和JBoss EL等,但Spring表达式语言(Spring Expression Language,简称SpEL)的创建初衷是为了为Spring社区提供一种统一且得到广泛支持的表达式语言,这种语言可以应用于Spring系列产品的各个方面。其语言特性是根据Spring系列产品中的需求来设计的,包括在Spring Tools集成开发环境(IDE)中实现代码补全等功能的需求。需要说明的是,SpEL基于一种与具体技术无关的API(应用程序编程接口),因此在有需要的情况下,也可以集成其他表达式语言的实现。
虽然SpEL是Spring生态系统中表达式评估的基础,但它并不直接依赖于Spring,可以独立使用。为了使示例更加自包含,本章中的许多示例将SpEL视为一种独立的表达式语言来使用。这需要创建一些基础设施类,例如解析器。大多数Spring用户无需处理这些基础设施,只需编写表达式字符串进行评估即可。这种典型用法的一个例子是将SpEL集成到基于XML或注解的Bean定义中,如用于定义Bean定义的表达式支持所示。
本章涵盖了表达式语言的特性、其API以及语言语法。在多个地方,Inventor和Society类被用作表达式求值的目标对象。这些类的声明以及用于填充它们的数据列在章节的末尾。
该表达式语言支持以下功能:
- 字面量表达式
- 访问属性、数组、列表和映射
- 内联列表
- 内联映射
- 数组构造
- 关系运算符
- 正则表达式
- 逻辑运算符
- 字符串运算符
- 数学运算符
- 赋值
- 类型表达式
- 方法调用
- 构造函数调用
- 变量
- 用户定义函数
- Bean引用
- 三元运算符、Elvis运算符和安全导航运算符
- 集合投影
- 集合选择
- 模板表达式
部分总结
📄️ 评估
本节介绍了如何以编程方式使用SpEL的接口及其表达式语言。完整的语言参考可以在“语言参考”(Language Reference)中找到。
📄️ Bean 定义中的表达式
您可以使用SpEL表达式与配置元数据来定义bean实例。在这两种情况下,定义表达式的语法形式都是#{}.
🗃️ 语言参考
19 个项目
📄️ 示例中使用的类
本节列出了本章示例中使用的所有类。