Spring SpEL - 表达式接口

ExpressionParser 是 Spring SpEL 的主要接口,它帮助将表达式字符串解析为已编译的表达式。 这些编译的表达式可以被评估并支持解析模板以及标准表达式字符串。


语法

以下是创建 ExpressionParser 并使用其对象获取值的示例。

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Welcome to Tutorialspoint'");
String message = (String) exp.getValue();

它应该按如下方式打印结果 −

Welcome to Tutorialspoint
  • ExpressionParser − 负责解析表达式字符串的接口。

  • Expression − 负责计算表达式字符串的接口。

  • Exceptions − ParseException 和 EvaluationException 可以在 parseExpression 和 getValue 方法调用期间抛出。

SpEL 支持调用方法、调用构造函数和访问属性。 以下示例显示了各种用例。


示例

以下示例显示了一个类 MainApp

让我们更新在 Spring SpEL - 创建项目章节中创建的项目。 我们正在添加以下文件 −

  • MainApp.java − 要运行和测试的主应用程序。

这是 MainApp.java 文件的内容 −

实例


package com.tutorialspoint;

import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;

public class MainApp {
   public static void main(String[] args) {
      ExpressionParser parser = new SpelExpressionParser();

      // parse a plain text
      Expression exp = parser.parseExpression("'Welcome to tutorialspoint'");
      String message = (String) exp.getValue();
      System.out.println(message);

      // invoke a method
      exp = parser.parseExpression("'Welcome to tutorialspoint'.concat('!')");
      message = (String) exp.getValue();
      System.out.println(message);

      // get a property
      exp = parser.parseExpression("'Welcome to tutorialspoint'.bytes");
      byte[] bytes = (byte[]) exp.getValue();
      System.out.println(bytes.length);

      // get nested properties
      exp = parser.parseExpression("'Welcome to tutorialspoint'.bytes.length");
      int length = (Integer) exp.getValue();
      System.out.println(length);

      //Calling constructor
      exp = parser.parseExpression("new String('Welcome to tutorialspoint').toUpperCase()");
      message = (String) exp.getValue();
      System.out.println(message);	   
   }
}

输出

Welcome to tutorialspoint
Welcome to tutorialspoint!
25
25
WELCOME TO TUTORIALSPOINT