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和语法。在几个地方,InventorSociety类被用作表达式评估的目标对象。这些类声明和用于填充它们的数据在本章末尾列出。

该表达式语言支持以下功能:

  • 字面表达式

  • 访问属性、数组、列表和映射

  • 内联列表

  • 内联映射

  • 数组构造

  • 关系运算符

  • 正则表达式

  • 逻辑运算符

  • 字符串运算符

  • 数学运算符

  • 赋值

  • 类型表达式

  • 方法调用

  • 构造函数调用

  • 变量

  • 用户定义函数

  • Bean引用

  • 三元、Elvis和安全导航运算符

  • 集合投影

  • 集合选择

  • 模板表达式