Spring实战之使用Expression接口进行表达式求值操作示例
本文实例讲述了Spring使用Expression接口进行表达式求值操作。分享给大家供大家参考,具体如下:
一Bean
packageorg.crazyit.app.domain; importjava.util.Date; publicclassPerson { privateIntegerid; privateStringname; privateDatebirth; //无参数的构造器 publicPerson() { } //初始化全部成员变量的构造器 publicPerson(Integerid,Stringname,Datebirth) { this.id=id; this.name=name; this.birth=birth; } //id的setter和getter方法 publicvoidsetId(Integerid) { this.id=id; } publicIntegergetId() { returnthis.id; } //name的setter和getter方法 publicvoidsetName(Stringname) { this.name=name; } publicStringgetName() { returnthis.name; } //birth的setter和getter方法 publicvoidsetBirth(Datebirth) { this.birth=birth; } publicDategetBirth() { returnthis.birth; } }
二测试类
packagelee; importorg.springframework.expression.*; importorg.springframework.expression.spel.standard.*; importorg.springframework.expression.spel.support.*; importjava.util.*; importorg.crazyit.app.domain.*; publicclassSpELTest { publicstaticvoidmain(String[]args) { //创建一个ExpressionParser对象,用于解析表达式 ExpressionParserparser=newSpelExpressionParser(); //最简单的字符串表达式 Expressionexp=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("newString('helloworld')" +".toUpperCase()"); System.out.println("newString('helloworld')" +".toUpperCase()的结果是:" +exp.getValue(String.class)); Personperson=newPerson(1,"孙悟空",newDate()); exp=parser.parseExpression("name"); //以指定对象作为root来计算表达式的值 //相当于调用person.name表达式的值 System.out.println("以persn为root,name表达式的值是:" +exp.getValue(person,String.class)); exp=parser.parseExpression("name=='孙悟空'"); StandardEvaluationContextctx=newStandardEvaluationContext(); //将person设为Context的root对象 ctx.setRootObject(person); //以指定Context来计算表达式的值 System.out.println(exp.getValue(ctx,Boolean.class)); Listlist=newArrayList (); list.add(true); EvaluationContextctx2=newStandardEvaluationContext(); //将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
newString('helloworld').toUpperCase()的结果是:HELLOWORLD
以persn为root,name表达式的值是:孙悟空
true
list集合的第一个元素为:false
更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。