4.SpEL Spring表达式语言

Spring表达式语言(简称“SpEL”)是一种功能强大的表达式语言,支持在运行时查询和操作对象图。语言语法类似于统一EL,但提供了其他功能,最显著的是方法调用和基本的字符串模板化功能。

虽然还有其他几种Java表达式语言可用,即--OGNL、MVEL和JBOSS EL,但是,为了命名一致性,创建了Spring表达式语言,为Spring社区提供了一个支持良好的表达式语言,可以在Spring的所有产品中使用。它的语言特性是由Spring产品组合中项目的需求驱动的,包括基于Eclipse的Spring工具套件中代码完成支持的工具需求。这就是说,SPEL基于technology-agnostic的API,它允许在需要时集成其他表达式语言实现。

虽然SPEL是Spring组合中expression求值的基础,但它不直接与Spring挂钩,可以独立使用。为了自我包含,本章中的许多示例将spel用作独立的表达式语言。这需要创建一些引导基础结构类,如解析器。大多数Spring用户不需要处理这个基础结构,只需要编写表达式字符串进行求值。这种典型用法的一个例子是将spel集成到创建基于XML或注解的bean定义中,如定义bean定义的表达式支持中所示。

本章介绍表达式语言的特性、API及其语言语法。在一些地方,Inventor和Society类被用作表达评估的目标对象。这些类声明和用于填充它们的数据列在本章末尾。

表达式语言支持如下的功能:

  • Literal expressions

  • Boolean and relational operators

  • Regular expressions

  • Class expressions

  • Accessing properties, arrays, lists, and maps

  • Method invocation

  • Relational operators

  • Assignment

  • Calling constructors

  • Bean references

  • Array construction

  • Inline lists

  • Inline maps

  • Ternary operator

  • Variables

  • User-defined functions

  • Collection projection

  • Collection selection

  • Templated expressions