Appearance
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 的典型使用示例包括将 SpEL 集成到基于 XML 或注解的 Bean 定义中,如在定义 Bean 定义时的表达式支持所示。
本章节介绍了表达式语言的特性、API 和语言语法。在多个地方,使用 Inventor 和 Society 类作为表达式评估的目标对象。这些类的声明和用于填充它们的数据列在章节末尾。
表达式语言支持以下功能:
- 字面量表达式
- 访问属性、数组、列表和映射
- 内联列表
- 内联映射
- 数组构造
- 关系运算符
- 正则表达式
- 逻辑运算符
- 字符串运算符
- 数学运算符
- 赋值
- 类型表达式
- 方法调用
- 构造函数调用
- 变量
- 用户定义的函数
- Bean 引用
- 三元运算符、Elvis 运算符和安全导航运算符
- 集合投影
- 集合选择
- 模板表达式