Spring 表达式语言 (SpEL)
Spring 表达式语言(简称 "SpEL")是一种强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法类似于 Jakarta Expression Language,但提供了额外的功能,最显著的是方法调用和基本的字符串模板功能。
虽然还有其他几种 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 和安全导航运算符
-
集合投影
-
集合选择
-
模板化表达式
章节摘要
📄️ 评估
本节介绍了 SpEL 接口及其表达式语言的编程使用。完整的语言参考可以在语言参考中找到。
📄️ Bean 定义中的表达式
您可以使用 SpEL 表达式与配置元数据来定义 bean 实例。在这两种情况下,定义表达式的语法形式为 #{ }。
🗃️ 语言参考
19 个项目
📄️ 示例中使用的类
本节列出了本章示例中使用的类。