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
复制链接