|
此版本仍在开发中,尚未稳定。如需最新的稳定版本,请使用 Spring Framework 7.0.6! |
Spring表达式语言(SpEL)
Spring表达式语言(简称“SpEL”)是一种功能强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法类似于Jakarta表达式语言,但提供了更多特性,尤其是方法调用和基础字符串模板功能。
尽管还有其他几种可用的 Java 表达式语言——例如 OGNL、MVEL 和 JBoss EL——但 Spring 表达式语言(SpEL)的创建旨在为 Spring 社区提供一种统一且得到良好支持的表达式语言,可在整个 Spring 产品组合中使用。其语言特性由 Spring 产品组合中各个项目的需求所驱动,包括 Spring Tools IDE 支持中的代码补全等工具需求。需要说明的是,SpEL 基于一种与技术无关的 API,如有需要,可集成其他表达式语言实现。
虽然SpEL是Spring产品组合中表达式评估的基础,但它并不直接与Spring绑定,可以独立使用。为了自包含,本章中的许多示例将SpEL当作独立的表达式语言来使用。这需要创建一些引导基础设施类,例如解析器。大多数Spring用户不需要处理这些基础设施,而是可以仅编写用于评估的表达式字符串。这种典型用法的一个例子是将SpEL集成到创建基于XML或注解的bean定义中,如 用于定义bean定义的表达式支持所示。
本章介绍表达式语言的功能、其API及其语言语法。在多个地方,Inventor和Society类被用作表达式求值的目标对象。这些类的声明以及用于填充它们的数据列在本章末尾。
表达式语言支持以下功能:
-
字面表达式
-
访问属性、数组、列表和映射
-
内联列表
-
内联映射
-
数组构造
-
关系运算符
-
正则表达式
-
逻辑运算符
-
字符串操作符
-
数学运算符
-
分配
-
类型表达式
-
方法调用
-
构造函数调用
-
变量
-
用户定义的函数
-
Bean引用
-
三元运算符、Elvis 运算符和安全导航运算符
-
集合投影
-
集合选择
-
模板表达式