測試 Spring EL與ExpressionParser

Spring表達式語言(SpEL)支持多種功能,並且可以測試這個特殊的「ExpressionParser」接口的表達式功能。

下面是兩個代碼片段,展示了使用 Spring EL 的基本用法。

使用SpEL來計算評估文字字符串表達式。

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'put spel expression here'");
String msg = exp.getValue(String.class); 

使用SpEL來計算評估 bean 屬性 – 「item.name」.

Item item = new Item("yiibai", 100);
StandardEvaluationContext itemContext = new StandardEvaluationContext(item);

//display the value of item.name property
Expression exp = parser.parseExpression("name");
String msg = exp.getValue(itemContext, String.class);

舉幾個例子來測試使用SpEL。這些代碼和註釋應該是自我探索。

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

public class App {
public static void main(String[] args) {

    ExpressionParser parser = new SpelExpressionParser();

    //literal expressions 
    Expression exp = parser.parseExpression("'Hello World'");
    String msg1 = exp.getValue(String.class);
    System.out.println(msg1);

    //method invocation
    Expression exp2 = parser.parseExpression("'Hello World'.length()");  
    int msg2 = (Integer) exp2.getValue();
    System.out.println(msg2);

    //Mathematical operators
    Expression exp3 = parser.parseExpression("100 \* 2");  
    int msg3 = (Integer) exp3.getValue();
    System.out.println(msg3);

    //create an item object
    Item item = new Item("yiibai", 100);
    //test EL with item object
    StandardEvaluationContext itemContext = new StandardEvaluationContext(item);

    //display the value of item.name property
    Expression exp4 = parser.parseExpression("name");
    String msg4 = exp4.getValue(itemContext, String.class);
    System.out.println(msg4);

    //test if item.name == 'yiibai'
    Expression exp5 = parser.parseExpression("name == 'yiibai'");
    boolean msg5 = exp5.getValue(itemContext, Boolean.class);
    System.out.println(msg5);

}

}

public class Item {

private String name;

private int qty;

public Item(String name, int qty) {
    super();
    this.name = name;
    this.qty = qty;
}

//...

}

輸出結果

Hello World
11
200
yiibai
true

本文展示了Spring表達式解析器的一些基本用法,訪問 官方Spring表達文檔,使用SpEL的例子。

下載代碼 –  http://pan.baidu.com/s/1hrd45Sw