Spring – SpEL 中的变量
EvaluationContext 接口由 StandardEvaluationContext 类实现。为了解析属性或方法,它采用了反射技术。 StandardEvaluationContext 上的方法 setVariable 可用于设置变量。使用符号#variableName,我们可以在表达式中使用这个变量。
我们可以在变量中放入一个值,然后使用该变量调用方法。我们必须利用 StandardEvaluationContext 类与变量进行交互。
虽然有各种可供选择的Java表达式语言,例如 OGNL、MVEL 和 JBoss EL,但 Spring 表达式语言的建立是为了向 Spring 社区提供一种受良好支持的单一表达式语言,可以在整个 Spring 产品组合中使用。该语言的特性取决于 Spring 产品组合项目的需求,包括基于 Eclipse 的 Spring Tool Suite 中代码完成辅助的工具需求。也就是说,SpEL 基于技术中立的 API,允许在需要时添加替代表达式语言实现。
SpEL是 Spring 产品组合中表达式评估的基础,但是,它与 Spring 无关,可以独立使用。本章中的许多示例都使用 SpEL,就好像它是一种独立的表达语言,以便自包含。这需要创建一些基础结构类,例如解析器。大多数 Spring 用户将避免处理此基础结构,而是专注于编写表达式字符串以进行评估。将 SpEL 集成到 XML 或基于注释的 bean 定义的创建中,如定义 bean 定义的表达式支持部分所示,就是这种常见用途的一个示例。
SpEL的特点
- 字面量表达
- 布尔和关系运算符
- 常用表达
- 类表达式
- 访问属性、数组、列表、映射
- 方法调用
- 关系运算符
- 任务
- 调用构造函数
- Bean 引用
- 数组构造
- 内联列表
- 内联地图
- 三元运算符
- 变量
- 用户自定义函数
- 收藏投影
- 收藏选择
- 模板化表达式
句法:
context.setVariable("newName", "Geeksforgeeks");
执行:
我们将通过以下两个列出的文件进行演示:
- 乘法。 Java - 乘法类。
- 测试。 Java - 运行和测试的主要应用程序。
A. 文件:乘法。Java
Java
// Java Program to Illustrate MultiplicationTest Class
// Class
public class MultiplicationTest {
// Class data members
int num1;
int num2;
// Getter
public int getNum1() { return num1; }
// Setter
public void setNum1(int num1)
{
// this keyword refers to current
// instance itself
this.num1 = num1;
}
// Getter
public int getNum2() { return num2; }
// Setter
public void setNum2(int num2) { this.num2 = num2; }
// Method
// To multiply two numbers
public int multiplication() { return num1 * num2; }
}
Java
// Java Program to Illustrate Spring SPEL Variable Example
// Importing required classes
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
// Class
public class Test {
// Main driver method
public static void main(String args[])
{
// Creating MultiplicationTest object.
MultiplicationTest multiplicationTest
= new MultiplicationTest();
// Creating StandardEvaluationContext object
// with MultiplicationTest object.
StandardEvaluationContext context
= new StandardEvaluationContext(
multiplicationTest);
// Creating a parser with default settings.
ExpressionParser parser
= new SpelExpressionParser();
// Setting variables values
parser.parseExpression("num1").setValue(context,
"30");
parser.parseExpression("num2").setValue(context,
"30");
// Calculate result
System.out.println(
multiplicationTest.multiplication());
}
}
B. 文件:测试。Java
Java
// Java Program to Illustrate Spring SPEL Variable Example
// Importing required classes
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
// Class
public class Test {
// Main driver method
public static void main(String args[])
{
// Creating MultiplicationTest object.
MultiplicationTest multiplicationTest
= new MultiplicationTest();
// Creating StandardEvaluationContext object
// with MultiplicationTest object.
StandardEvaluationContext context
= new StandardEvaluationContext(
multiplicationTest);
// Creating a parser with default settings.
ExpressionParser parser
= new SpelExpressionParser();
// Setting variables values
parser.parseExpression("num1").setValue(context,
"30");
parser.parseExpression("num2").setValue(context,
"30");
// Calculate result
System.out.println(
multiplicationTest.multiplication());
}
}
输出:
600