栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring实战之使用Expression接口进行表达式求值操作示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring实战之使用Expression接口进行表达式求值操作示例

本文实例讲述了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)
  {
    // 创建一个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());
    // 使用构造器来创建对象
    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 list = new ArrayList();
    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节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/135919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号