欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring實戰(zhàn)之使用Expression接口進行表達式求值操作示例

 更新時間:2019年12月11日 08:36:22   作者:cakincqm  
這篇文章主要介紹了Spring實戰(zhàn)之使用Expression接口進行表達式求值操作,結合實例形式分析了Spring操作Expression接口實現(xiàn)表達式運算的操作技巧與相關注意事項,需要的朋友可以參考下

本文實例講述了Spring使用Expression接口進行表達式求值操作。分享給大家供大家參考,具體如下:

一 Bean

package org.crazyit.app.domain;
import java.util.Date;
public class Person
{
   private Integer id;
   private String name;
   private Date birth;
   // 無參數的構造器
   public Person()
   {
   }
   // 初始化全部成員變量的構造器
   public Person(Integer id , String name , Date birth)
   {
      this.id = id;
      this.name = name;
      this.birth = birth;
   }
   // id的setter和getter方法
   public void setId(Integer id)
   {
      this.id = id;
   }
   public Integer getId()
   {
      return this.id;
   }
   // name的setter和getter方法
   public void setName(String name)
   {
      this.name = name;
   }
   public String getName()
   {
      return this.name;
   }
   // birth的setter和getter方法
   public void setBirth(Date birth)
   {
      this.birth = birth;
   }
   public Date getBirth()
   {
      return this.birth;
   }
}

二 測試類

package lee;
import org.springframework.expression.*;
import org.springframework.expression.spel.standard.*;
import org.springframework.expression.spel.support.*;
import java.util.*;
import org.crazyit.app.domain.*;
public class SpELTest
{
  public static void main(String[] args)
  {
    // 創(chuàng)建一個ExpressionParser對象,用于解析表達式
    ExpressionParser parser = new SpelExpressionParser();
    // 最簡單的字符串表達式
    Expression exp = parser.parseExpression("'HelloWorld'");
    System.out.println("'HelloWorld'的結果: " + exp.getValue());
    // 調用方法的表達式
    exp = parser.parseExpression("'HelloWorld'.concat('!')");
    System.out.println("'HelloWorld'.concat('!')的結果: "
      + exp.getValue());
    // 調用對象的getter方法
    exp = parser.parseExpression("'HelloWorld'.bytes");
    System.out.println("'HelloWorld'.bytes的結果: "
      + exp.getValue());
    // 訪問對象的屬性(d相當于HelloWorld.getBytes().length)
    exp = parser.parseExpression("'HelloWorld'.bytes.length");
    System.out.println("'HelloWorld'.bytes.length的結果:"
      + exp.getValue());
    // 使用構造器來創(chuàng)建對象
    exp = parser.parseExpression("new String('helloworld')"
      + ".toUpperCase()");
    System.out.println("new String('helloworld')"
      + ".toUpperCase()的結果是: "
      + exp.getValue(String.class));
    Person person = new Person(1 , "孫悟空", new Date());
    exp = parser.parseExpression("name");
    // 以指定對象作為root來計算表達式的值
    // 相當于調用person.name表達式的值
    System.out.println("以persn為root,name表達式的值是: "
      + exp.getValue(person , String.class));
    exp = parser.parseExpression("name=='孫悟空'");
    StandardEvaluationContext ctx = new StandardEvaluationContext();
    // 將person設為Context的root對象
    ctx.setRootObject(person);
    // 以指定Context來計算表達式的值
    System.out.println(exp.getValue(ctx , Boolean.class));
    List<Boolean> list = new ArrayList<Boolean>();
    list.add(true);
    EvaluationContext ctx2 = new StandardEvaluationContext();
    // 將list設置成EvaluationContext的一個變量
    ctx2.setVariable("list" , list);
    // 修改list變量的第一個元素的值
    parser.parseExpression("#list[0]").setValue(ctx2 , "false");
    // list集合的第一個元素被改變
    System.out.println("list集合的第一個元素為:"
      + parser.parseExpression("#list[0]").getValue(ctx2));
  }
}

三 測試結果

'HelloWorld'的結果: HelloWorld
'HelloWorld'.concat('!')的結果: HelloWorld!
'HelloWorld'.bytes的結果: [B@14899482
'HelloWorld'.bytes.length的結果:10
new String('helloworld').toUpperCase()的結果是: HELLOWORLD
以persn為root,name表達式的值是: 孫悟空
true
list集合的第一個元素為:false

更多關于java相關內容感興趣的讀者可查看本站專題:《Spring框架入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • Java中Array、List、Map相互轉換的方法詳解

    Java中Array、List、Map相互轉換的方法詳解

    這篇文章主要介紹了Java中Array、List、Map相互轉換的方法詳解,在實際項目開發(fā)中或者一些算法面試題目中經常需要用到Java中這三種類型的相互轉換,比如對于一個整型數組中尋找一個整數與所給的一個整數值相同,需要的朋友可以參考下
    2023-08-08
  • Java基礎教程之類型轉換與多態(tài)

    Java基礎教程之類型轉換與多態(tài)

    這篇文章主要介紹了Java基礎教程之類型轉換與多態(tài),本文講解了 基本類型轉換、 upcast與多態(tài)、 Object類等內容,需要的朋友可以參考下
    2014-09-09
  • spring解決循環(huán)依賴的簡單方法

    spring解決循環(huán)依賴的簡單方法

    這篇文章主要給大家介紹了關于spring解決循環(huán)依賴的簡單方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Struts2的輸入校驗實例代碼

    Struts2的輸入校驗實例代碼

    這篇文章主要介紹了Struts2的輸入校驗實例代碼,非常不錯,具有參考借鑒價值, 需要的朋友可以參考下
    2017-03-03
  • java9學習系列之安裝與jshell使用

    java9學習系列之安裝與jshell使用

    2017年9月21日,千呼萬喚始出來,Java9終于發(fā)布了。作為自己天天接觸的“對象”,還是應該多花點心思去了解她。后續(xù)再進一步了解詳細特性。下面這篇文章主要給大家介紹了關于java9學習系列之安裝與jshell使用的相關資料,需要的朋友可以參考下。
    2017-09-09
  • Spring Boot中使用JSR-303實現(xiàn)請求參數校驗

    Spring Boot中使用JSR-303實現(xiàn)請求參數校驗

    這篇文章主要介紹了Spring Boot中使用JSR-303實現(xiàn)請求參數校驗,JSR-303校驗我們一般都是對Java的實體類對象進行校驗,主要檢驗JSR-303是Java中的一個規(guī)范,用于實現(xiàn)請求參數校驗在我們的實體類對象的屬性上,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Java裝飾者模式實例詳解

    Java裝飾者模式實例詳解

    這篇文章主要介紹了Java裝飾者模式,結合實例形式詳細分析了裝飾著模式的原理與java具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • 關于ThreadLocal對request和response的用法說明

    關于ThreadLocal對request和response的用法說明

    這篇文章主要介紹了關于ThreadLocal對request和response的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java在創(chuàng)建文件時指定編碼的實現(xiàn)方法

    Java在創(chuàng)建文件時指定編碼的實現(xiàn)方法

    本文主要介紹了Java在創(chuàng)建文件時指定編碼的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • SpringBoot如何集成PageHelper分頁功能

    SpringBoot如何集成PageHelper分頁功能

    這篇文章主要介紹了SpringBoot如何集成PageHelper分頁功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03

最新評論