JAVA中spring常用语法,Spring实战之SpEl语法实例详解

本文实例讲述了Spring实战之SpEl语法。分享给大家供大家参考,具体如下:

一 Bean

package org.crazyit.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 org.springframework.expression.*;

import org.springframework.expression.spel.standard.*;

import org.springframework.expression.spel.support.*;

import org.springframework.expression.common.TemplateParserContext;

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("'Hello World'");

System.out.println(exp.getValue(String.class));

exp = parser.parseExpression("0.23");

System.out.println(exp.getValue(Double.class));

System.out.println("---------------------------------------------");

//------------使用SpEL创建数组-----------

// 创建一个数组

exp = parser.parseExpression(

"new String[]{'java' , 'Struts' , 'Spring'}");

System.out.println(exp.getValue());

// 创建二维数组

exp = parser.parseExpression(

"new int[2][4]");

System.out.println(exp.getValue());

System.out.println("---------------------------------------------");

//------------使用SpEL创建List集合-----------

exp = parser.parseExpression(

"{'java' , 'Struts' , 'Spring'}");

System.out.println(exp.getValue());

// 创建“二维”List集合

exp = parser.parseExpression(

"{{'疯狂Java讲义' , '疯狂Android讲义'}, {'左传' , '战国策'}}");

System.out.println(exp.getValue());

System.out.println("---------------------------------------------");

//------------使用SpEL访问List集合、Map集合的元素-----------

List list = new ArrayList();

list.add("Java");

list.add("Spring");

Map map =

new HashMap();

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();

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();

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.println(list.get(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();

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.println(expr.getValue(ctx));

map = new HashMap();

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.println(expr.getValue(ctx));

System.out.println("---------------------------------------------");

//------------在SpEL中对集合进行投影-----------

list = new ArrayList();

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.println(expr.getValue(ctx));

List list2 = new ArrayList();

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.println(expr.getValue(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.println(expr.getValue(p1));

// 将使用p2对象name、height填充上面表达式模板中的#{}

System.out.println(expr.getValue(p2));

}

}

三 测试结果

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程序设计有所帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值