Spring 表达式语言 - SpEL

文章目录

  • Spring 表达式语言 - SpEL
        • 1、什么是SpEL
        • 2、表达式语言支持以下功能
        • 3、使用Spring 的SpEL 进行简单构建
        • 4、调用方法
        • 5、级联嵌套和公共属性
        • 6、调用构造函数
        • 7、布尔运算

Spring 表达式语言 - SpEL


1、什么是SpEL

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

尽管还有其他几种Java表达式语言可供使用,例如OGNL,MVEL和JBoss EL,但Spring表达式语言的创建是为了向Spring社区提供一种受良好支持的表达式语言,该语言可用于该版本中的所有产品。春季投资组合。它的语言功能受Spring产品组合中项目的要求驱动,包括基于Eclipse的Spring Tool Suite中代码完成支持的工具要求。也就是说,SpEL基于与技术无关的API,允许在需要时集成其他表达语言实现。

虽然SpEL是Spring产品组合中表达评估的基础,但它并不直接与Spring绑定,可以独立使用。为了自成一体,本章中的许多示例都将SpEL当作一种独立的表达语言来使用。这需要创建一些自举基础结构类,例如解析器。大多数Spring用户将不需要处理这种基础结构,而只需要编写表达式字符串来进行评估。这种典型用法的一个示例是将SpEL集成到创建XML或基于注释的Bean定义中,如用于定义Bean定义的表达式支持部分中所示。

2、表达式语言支持以下功能

  • 文本
  • 布尔运算符和关系运算符
  • 常用表达式
  • 类表达式
  • 访问属性,数组,列表,映射
  • 方法调用
  • 关系运算符
  • 分配
  • 调用构造函数
  • Bean特性
  • 数组构造器
  • 内联List
  • 内联Map
  • 三元运算符
  • 变量
  • 用户自定义函数
  • 集合投影
  • 集合选择器
  • 模板表达式

3、使用Spring 的SpEL 进行简单构建

表示文本

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'");
String message = (String) exp.getValue();

提供给用户使用的包位于org.springframework.expressionspel.support

ExpressionParser负责解析表达式

4、调用方法

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'.concat('!')");
String message = (String) exp.getValue();

得到的message值为Hello World!

5、级联嵌套和公共属性

    ExpressionParser parser = new SpelExpressionParser();

    // invokes 'getBytes().length'
    Expression exp = parser.parseExpression("'Hello World'.bytes.length");
    int length = (Integer) exp.getValue();
    System.out.println(length);

将会输出11

6、调用构造函数

    ExpressionParser parser = new SpelExpressionParser();
    Expression exp = parser.parseExpression("new String('hello world').toUpperCase()");
    String message = exp.getValue(String.class);
    System.out.println(message);

将会得到 HELLO WORLD

7、布尔运算

Expression exp = parser.parseExpression("name == 'Nikola Tesla'");
boolean result = exp.getValue(context, Boolean.class); // evaluates to true

你可能感兴趣的:(框架相关,-,SpringBoot体系,#,其它工具)