Spring 表达式语言 (SpEL)
Spring 表达式语言(简称“SpEL”)是一种功能强大的表达式语言,支持在运行时查询和操作对象图。该语言语法类似于 Jakarta 表达式语言,但提供了额外的功能,最值得注意的是方法调用和基本字符串模板功能。
虽然有几种其他 Java 表达式语言可用(例如 OGNL、MVEL 和 JBoss EL),但 Spring 表达式语言的创建是为了为 Spring 社区提供一种单一的、得到良好支持的表达式语言,该语言可以在 Spring 产品组合中的所有产品中使用。它的语言功能是由 Spring 产品组合中项目的需要驱动的,包括 Spring Tools for Eclipse 中代码完成支持的工具要求。也就是说,SpEL 基于一个与技术无关的 API,允许在需要时集成其他表达式语言实现。
虽然 SpEL 是 Spring 产品组合中表达式评估的基础,但它没有直接绑定到 Spring,可以独立使用。为了自包含,本章中的许多示例都将 SpEL 用作独立的表达式语言。这需要创建一些引导基础设施类,例如解析器。大多数 Spring 用户不需要处理此基础设施,而是可以只编写表达式字符串以供评估。此典型用例的一个示例是将 SpEL 集成到创建基于 XML 或注释的 Bean 定义中,如 表达式支持定义 Bean 定义 中所示。
本章介绍了表达式语言的功能、API 和语言语法。在某些地方,Inventor
和 Society
类用作表达式评估的目标对象。这些类声明以及用于填充它们的数据列在本章末尾。
表达式语言支持以下功能
-
文字表达式
-
访问属性、数组、列表和映射
-
内联列表
-
内联映射
-
数组构造
-
关系运算符
-
正则表达式
-
逻辑运算符
-
字符串运算符
-
数学运算符
-
赋值
-
类型表达式
-
方法调用
-
构造函数调用
-
变量
-
用户定义函数
-
Bean 引用
-
三元运算符、Elvis 运算符和安全导航运算符
-
集合投影
-
集合选择
-
模板表达式