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

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;
   // 無參數(shù)的構造器
   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數(shù)據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

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

相關文章

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

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

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

    Java結構型模式之橋接模式詳解

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

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

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

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

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

    Spring Cloud Feign原理詳解

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

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

    這篇文章主要介紹了Java中的Lombok使用及工作原理詳解,Lombok是一個Java庫,能自動插入編輯器并構建工具,簡化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)

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

    SpringBoot HTTP 400排查方式

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

    idea新建springboot項目的方法

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

最新評論

泰州市| 安泽县| 高青县| 威远县| 雅江县| 东光县| 玛沁县| 佛冈县| 讷河市| 栾川县| 二连浩特市| 东乌珠穆沁旗| 教育| 嘉定区| 临安市| 故城县| 宜城市| 上蔡县| 紫阳县| 宜君县| 寻甸| 延边| 邢台市| 吴忠市| 时尚| 江川县| 广河县| 富宁县| 当涂县| 来安县| 和田市| 临桂县| 五莲县| 东乌珠穆沁旗| 武平县| 青神县| 漳浦县| 内乡县| 精河县| 云霄县| 房山区|