Spring实战之SpEl语法实例详解本⽂实例讲述了Spring实战之SpEl语法。分享给⼤家供⼤家参考,具体如下:
⼀ Bean
azyit.app.domain;
import java.util.Date;
public class Person
{
private Integer id;
private String name;
private int height;
public Person()
{
}
// 初始化全部成员变量的构造器
public Person(Integer id , String name , int height)
{
this.id = id;
this.name = name;
this.height = height;
}
// 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;
}
// height的setter和getter⽅法
public void setHeight(int height)
{
this.height = height;
}
public int getHeight()
{
return this.height;
}
}
⼆测试类
package lee;
import pression.*;
import pression.spel.standard.*;
import pression.spel.support.*;
import pressionmon.TemplateParserContext;
import java.util.*;
azyit.app.domain.*;
public class SpELTest
{
public static void main(String[] args)
{
// 创建⼀个ExpressionParser对象,⽤于解析表达式
ExpressionParser parser = new SpelExpressionParser();
// 使⽤直接量表达式
Expression exp = parser.parseExpression("'Hello World'");
System.out.Value(String.class));
exp = parser.parseExpression("0.23");
System.out.Value(Double.class));
System.out.println("---------------------------------------------");
//------------使⽤SpEL创建数组-----------
// 创建⼀个数组
exp = parser.parseExpression(
"new String[]{'java' , 'Struts' , 'Spring'}");
System.out.Value());
// 创建⼆维数组
exp = parser.parseExpression(
"new int[2][4]");
System.out.Value());
System.out.println("---------------------------------------------");
/
/------------使⽤SpEL创建List集合-----------
exp = parser.parseExpression(
"{'java' , 'Struts' , 'Spring'}");
System.out.Value());
// 创建“⼆维”List集合
exp = parser.parseExpression(
"{{'疯狂Java讲义' , '疯狂Android讲义'}, {'左传' , '战国策'}}");
System.out.Value());
System.out.println("---------------------------------------------");
//------------使⽤SpEL访问List集合、Map集合的元素-----------
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("Spring");
Map<String, Double> map =
new HashMap<String, Double>();
map.put("Java" , 80.0);
map.put("Spring" , 89.0);
// 创建⼀个EvaluationContext对象,作为SpEL解析变量的上下⽂    EvaluationContext ctx = new StandardEvaluationContext();
// 设置两个变量
ctx.setVariable("mylist" , list);
ctx.setVariable("mymap" , map);
// 访问List集合的第⼆个元素
System.out.println(parser
.parseExpression("#mylist[1]").getValue(ctx));
// 访问Map集合的指定元素
System.out.println(parser
.parseExpression("#mymap['Java']").getValue(ctx));
System.out.println("---------------------------------------------");
//------------使⽤SpEL调⽤⽅法-----------
// 调⽤String对象的substring()⽅法
System.out.println(parser
.parseExpression("'HelloWorld'.substring(2, 5)")
.getValue());
list = new ArrayList<String>();
list.add("java");
list.add("struts");
list.add("spring");
list.add("hibernate");
// 创建⼀个EvaluationContext对象,作为SpEL解析变量的上下⽂    ctx = new StandardEvaluationContext();
// 设置⼀个变量
ctx.setVariable("mylist" , list);
// 调⽤指定变量所代表的对象的subList()⽅法
System.out.println(parser
.parseExpression("#mylist.subList(1, 3)").getValue(ctx));
System.out.println("---------------------------------------------");
//------------在SpEL中使⽤运算符-----------
list = new ArrayList<String>();
list.add("java");
list.add("struts");
list.add("spring");
list.add("hibernate");
// 创建⼀个EvaluationContext对象,作为SpEL解析变量的上下⽂    ctx = new StandardEvaluationContext();
// 设置⼀个变量
ctx.setVariable("mylist" , list);
// 对集合的第⼀个元素进⾏赋值
parser.parseExpression("#mylist[0]='疯狂Java讲义'")
.getValue(ctx);
// 下⾯将输出疯狂Java讲义
System.out.(0));
// 使⽤三⽬运算符
System.out.println(parser.parseExpression("#mylist.size()>3?"      + "'myList长度⼤于3':'myList长度不⼤于3'")
.getValue(ctx));
System.out.println("---------------------------------------------");
//------------在SpEL中使⽤类型运算符-----------
//调⽤Math的静态⽅法
System.out.println(parser.parseExpression(
"T(java.lang.Math).random()").getValue());
//调⽤Math的静态⽅法
System.out.println(parser.parseExpression(
"T(System).getProperty('os.name')").getValue());
System.out.println("---------------------------------------------");
//------------在SpEL中调⽤构造器-----------
// 创建对象
System.out.println(parser.parseExpression(
"new String('HelloWorld').substring(2, 4)")
.getValue());
// 创建对象
System.out.println(parser.parseExpression(
"new javax.swing.JFrame('测试')"
+ ".setVisible('true')").getValue());
System.out.println("---------------------------------------------");
//------------在SpEL中使⽤安全导航操作-----------
// 使⽤安全操作,将输出null
System.out.println("----" + parser.parseExpression(
"#foo?.bar").getValue());
// 不使⽤安全操作,将引发NullPointerException
//    System.out.println(parser.parseExpression(
//      "#foo.bar").getValue());
System.out.println("---------------------------------------------");
//------------在SpEL中对集合进⾏选择-----------
list = new ArrayList<String>();
list.add("疯狂Java讲义");
list.add("疯狂Ajax讲义");
list.add("疯狂iOS讲义");
list.add("经典Java EE企业应⽤实战");
// 创建⼀个EvaluationContext对象,作为SpEL解析变量的上下⽂    ctx = new StandardEvaluationContext();
ctx.setVariable("mylist" , list);
// 判断集合元素length()⽅法的长度⼤于7,“疯狂iOS讲义”被剔除    Expression expr = parser.parseExpression
("#mylist.?[length()>7]");
System.out.Value(ctx));
map = new HashMap<String ,Double>();
map.put("Java" , 89.0);
map.put("Spring" , 82.0);
map.put("英语" , 75.0);
ctx.setVariable("mymap" , map);
// 判断Map集合的value值⼤于80,只保留前⾯2个Entry
expr = parser.parseExpression
("#mymap.?[value>80]");
System.out.Value(ctx));
System.out.println("---------------------------------------------");
//------------在SpEL中对集合进⾏投影-----------
list = new ArrayList<String>();
list.add("疯狂Java讲义");
list.add("疯狂Ajax讲义");
list.add("疯狂iOS讲义");
list.add("经典Java EE企业应⽤实战");
// 创建⼀个EvaluationContext对象,作为SpEL解析变量的上下⽂    ctx = new StandardEvaluationContext();
ctx.setVariable("mylist" , list);
// 得到的新集合的元素是原集合的每个元素length()⽅法返回值    expr = parser.parseExpression
("#mylist.![length()]");
System.out.Value(ctx));
List<Person> list2 = new ArrayList<Person>();
list2.add(new Person(1, "孙悟空" , 162));
list2.add(new Person(2, "猪⼋戒" , 182));
list2.add(new Person(3, "⽜魔王" , 195));
ctx.setVariable("mylist2" , list2);
// 得到的新集合的元素是原集合的每个元素name属性值
expr = parser.parseExpression
("#mylist2.![name]");
System.out.Value(ctx));
System.out.println("---------------------------------------------");
/
/------------在SpEL中使⽤表达式模板-----------
Person p1 = new Person(1, "孙悟空" , 162);
Person p2 = new Person(2, "猪⼋戒" , 182);
expr = parser.parseExpression(
"我的名字是#{name},⾝⾼是#{height}"
, new TemplateParserContext());
// 将使⽤p1对象name、height填充上⾯表达式模板中的#{}
System.out.Value(p1));
// 将使⽤p2对象name、height填充上⾯表达式模板中的#{}
System.out.Value(p2));
}
springboot菜鸟教程eclipse
}
三测试结果
Hello World
0.23
---------------------------------------------
[Ljava.lang.String;@2c13da15
[[I@77556fd
---------------------------------------------
[java, Struts, Spring]
[[疯狂Java讲义, 疯狂Android讲义], [左传, 战国策]]
---------------------------------------------
Spring
80.0
---------------------------------------------
llo
[struts, spring]
---------------------------------------------
疯狂Java讲义
myList长度⼤于3
---------------------------------------------
0.5577767377702313
Windows 10
-
--------------------------------------------
ll
null
---------------------------------------------
----null
---------------------------------------------
[疯狂Java讲义, 疯狂Ajax讲义, 经典Java EE企业应⽤实战]
{Java=89.0, Spring=82.0}
---------------------------------------------
[8, 8, 7, 15]
[孙悟空, 猪⼋戒, ⽜魔王]
-
--------------------------------------------
我的名字是孙悟空,⾝⾼是162
我的名字是猪⼋戒,⾝⾼是182
更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。