最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

一 Bean

package org.crazyit.app.domain;
import java.util.Date;
public class Person
{
   private Integer id;
   private String name;
   private Date birth;
   // 無參數(shù)的構(gòu)造器
   public Person()
   {
   }
   // 初始化全部成員變量的構(gòu)造器
   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對象,用于解析表達(dá)式
    ExpressionParser parser = new SpelExpressionParser();
    // 最簡單的字符串表達(dá)式
    Expression exp = parser.parseExpression("'HelloWorld'");
    System.out.println("'HelloWorld'的結(jié)果: " + exp.getValue());
    // 調(diào)用方法的表達(dá)式
    exp = parser.parseExpression("'HelloWorld'.concat('!')");
    System.out.println("'HelloWorld'.concat('!')的結(jié)果: "
      + exp.getValue());
    // 調(diào)用對象的getter方法
    exp = parser.parseExpression("'HelloWorld'.bytes");
    System.out.println("'HelloWorld'.bytes的結(jié)果: "
      + exp.getValue());
    // 訪問對象的屬性(d相當(dāng)于HelloWorld.getBytes().length)
    exp = parser.parseExpression("'HelloWorld'.bytes.length");
    System.out.println("'HelloWorld'.bytes.length的結(jié)果:"
      + exp.getValue());
    // 使用構(gòu)造器來創(chuàng)建對象
    exp = parser.parseExpression("new String('helloworld')"
      + ".toUpperCase()");
    System.out.println("new String('helloworld')"
      + ".toUpperCase()的結(jié)果是: "
      + exp.getValue(String.class));
    Person person = new Person(1 , "孫悟空", new Date());
    exp = parser.parseExpression("name");
    // 以指定對象作為root來計算表達(dá)式的值
    // 相當(dāng)于調(diào)用person.name表達(dá)式的值
    System.out.println("以persn為root,name表達(dá)式的值是: "
      + exp.getValue(person , String.class));
    exp = parser.parseExpression("name=='孫悟空'");
    StandardEvaluationContext ctx = new StandardEvaluationContext();
    // 將person設(shè)為Context的root對象
    ctx.setRootObject(person);
    // 以指定Context來計算表達(dá)式的值
    System.out.println(exp.getValue(ctx , Boolean.class));
    List<Boolean> list = new ArrayList<Boolean>();
    list.add(true);
    EvaluationContext ctx2 = new StandardEvaluationContext();
    // 將list設(shè)置成EvaluationContext的一個變量
    ctx2.setVariable("list" , list);
    // 修改list變量的第一個元素的值
    parser.parseExpression("#list[0]").setValue(ctx2 , "false");
    // list集合的第一個元素被改變
    System.out.println("list集合的第一個元素為:"
      + parser.parseExpression("#list[0]").getValue(ctx2));
  }
}

三 測試結(jié)果

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

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

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

相關(guān)文章

  • Spring?boot?處理大文件上傳完整代碼

    Spring?boot?處理大文件上傳完整代碼

    這篇文章主要介紹了Spring?boot?處理大文件上傳,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java結(jié)構(gòu)型模式之橋接模式詳解

    Java結(jié)構(gòu)型模式之橋接模式詳解

    橋接模式是一種很實用的結(jié)構(gòu)型模式,如果系統(tǒng)中某個類存在兩個獨立變化的維度,通過橋接模式將這兩個維度分離出來,使兩者可以獨立擴(kuò)展
    2023-02-02
  • Java怎樣判斷堆區(qū)中的對象可以被回收了

    Java怎樣判斷堆區(qū)中的對象可以被回收了

    文章介紹了Java垃圾回收機制的工作原理,主要通過引用計數(shù)法和可達(dá)性分析法來判斷對象是否可以被回收,引用計數(shù)法存在循環(huán)引用問題,而可達(dá)性分析法則使用GCRoot對象來判斷對象是否可達(dá),從而決定是否回收,這兩種方法各有優(yōu)缺點,但Java最終采用了可達(dá)性分析法來實現(xiàn)垃圾回收
    2024-12-12
  • 解決javaWEB中前后臺中文亂碼問題的3種方法

    解決javaWEB中前后臺中文亂碼問題的3種方法

    這篇文章主要介紹了解決javaWEB中前后臺中文亂碼問題的3種方法,中文問題一直是很多人難以解決的問題,對這方面感興趣的朋友可以參考一下
    2015-11-11
  • Spring Cloud Feign原理詳解

    Spring Cloud Feign原理詳解

    Feign 主要是幫助我們方便進(jìn)行rest api服務(wù)間的調(diào)用,本文從Spring Cloud對feign封裝的源碼中去了解其主要實現(xiàn)機制
    2021-06-06
  • Java中的Lombok使用及工作原理詳解

    Java中的Lombok使用及工作原理詳解

    這篇文章主要介紹了Java中的Lombok使用及工作原理詳解,Lombok是一個Java庫,能自動插入編輯器并構(gòu)建工具,簡化Java開發(fā),通過添加注解的方式,不需要為類編寫getter或eques方法,同時可以自動化日志變量,需要的朋友可以參考下
    2023-10-10
  • 淺談Synchronized和Lock的區(qū)別

    淺談Synchronized和Lock的區(qū)別

    這篇文章主要介紹了淺談Synchronized和Lock的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java 在線考試云平臺的實現(xiàn)

    Java 在線考試云平臺的實現(xiàn)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+springboot+mysql+maven實現(xiàn)一個前端vue后臺java微服務(wù)的在線考試系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • SpringBoot HTTP 400排查方式

    SpringBoot HTTP 400排查方式

    這篇文章主要介紹了SpringBoot HTTP 400排查方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • idea新建springboot項目的方法

    idea新建springboot項目的方法

    這篇文章主要介紹了idea新建springboot項目的方法,文中講解非常細(xì)致,圖文并茂幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論

晋中市| 西乌珠穆沁旗| 阿合奇县| 盐边县| 额尔古纳市| 巴林右旗| 资源县| 奉化市| 株洲市| 寿阳县| 天津市| 新晃| 秦安县| 定远县| 仪陇县| 灵丘县| 海安县| 天津市| 桂林市| 大石桥市| 高邑县| 会泽县| 揭阳市| 浮山县| 黔西| 怀化市| 壶关县| 长垣县| 磐安县| 台江县| 惠东县| 莎车县| 永嘉县| 连平县| 囊谦县| 泰宁县| 普安县| 宿松县| 洪湖市| 阳江市| 合阳县|