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 - 负责求值表达式字符串的接口。

  • 异常 - 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
广告
© . All rights reserved.