java expression 用法_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程序设计有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值