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和安全导航运算符
-
集合投影
-
集合选择
-
模板表达式