使用SpEl进行表达式操作,基本操作如下:

<!--第一步,构建解析 -->
ExpressionParser parser = new SpelExpressionParser(); <!--第二步,使用表达式进行解析-->
Expression exp = parser.parseExpression( "('hello').concat(#end)"); <!--第三步,使用上下文设值(可省)-->
StandardEvaluationContext sec = new StandardEvaluationContext();
sec.setVariable("end", "!"); <!--第四步,获取结果-->
<!--没有第三步时-->
exp.getValue();
<!--有第三步时-->
exp.getValue(sec);
  

  

▲基础特性

——SpEL使用#{…}作为定界符,所有在大框号中的字符都将被认为是SpEL.

——1、 字面量的表示

<property name="count" value="#{5}"/>
<property name="frequency" value="#{89.7}"/>
<property name="capacity" value="#{1e4}"/>
<property name="name" value="#{'Chuck'}"/>
<property name='name' value='#{"Chuck"}'/>
<property name="enabled" value="#{false}"/>

——2、 引用Bean,属性和方法

1>引用其他对象

<bean id=”saxophone” value=”com.xxx.xxx.Xxx”/>
<bean ..>
.
<property name="instrument" value="#{saxophone}"/>
.
<bean/>

  通过id:“saxophone”将对象注入到instrument属性中,这与下面的配置是一样的:

<property name="instrument" ref="saxophone"/>

   2> 引用其他对象的属性

<bean id="carl"
class="com.springinaction.springidol.Instrumentalist">
<property name="song" value="#{kenny.song}" />
</bean>

  ▲SpEL对集合的支持

<util:list id="cities">
<bean class="com.habuma.spel.cities.City"
p:name="Chicago" p:state="IL" p:population="2853114"/>
<bean class="com.habuma.spel.cities.City"
p:name="Atlanta" p:state="GA" p:population="537958"/>
<bean class="com.habuma.spel.cities.City"
p:name="Dallas" p:state="TX" p:population="1279910"/>
<bean class="com.habuma.spel.cities.City"
p:name="Houston" p:state="TX" p:population="2242193"/>
<bean class="com.habuma.spel.cities.City"
p:name="Odessa" p:state="TX" p:population="90943"/>
<bean class="com.habuma.spel.cities.City"
p:name="El Paso" p:state="TX" p:population="613190"/>
<bean class="com.habuma.spel.cities.City"
p:name="Jal" p:state="NM" p:population="1996"/>
<bean class="com.habuma.spel.cities.City"
p:name="Las Cruces" p:state="NM" p:population="91865"/>
</util:list>

——1、 获取Collection中的某个对象

〇通过下标访问,如下:

<property name="chosenCity" value="#{cities[2]}"/>

——2、获取Collection中的子集-通过条件筛选(注意新对象是一个新的Collection)

 <!--筛选子集(.?[])-->
<property name="bigCities" value="#{cities.?[population gt 100000]}"/> <!--获取第一个(.^[])-->
<property name="aBigCity" value="#{cities.^[population gt 100000]}"/> <--获取最后一个(.$[])-->
<property name="aBigCity" value="#{cities.$[population gt 100000]}"/>

——3、集合的投影(.![])

<!-- 如果想获得所有城市的名称组成的列表,可用如下操作,将返回"Chicago", "Atlanta", "Dallas" -->
<property name="cityNames" value="#{cities.![name]}"/> <!-- 将返回"Chicago, IL", "Atlanta, GA", and "Dallas, TX".-->
<property name="cityNames" value="#{cities.![name + ', ' + state]}"/>

  

spring3表达式语言(SpEL)的更多相关文章

  1. Spring3表达式语言(SpEL)学习笔记

    最新地址请访问:http://leeyee.github.io/blog/2011/06/19/spring-expression-language Spring Excpression Langua ...

  2. Spring3 表达式语言(SpEL)介绍

    转载自:http://iyiguo.net/blog/2011/06/19/spring-expression-language/ 下一版本 项目需要使用到SpEL ,做一个保存.

  3. Sping表达式语言--SpEL

    Spring表达式语言---SpEL 是一个支持运行时查询和操作对象的强大的表达式语言 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean ...

  4. 7 -- Spring的基本用法 -- 12... Spring 3.0 提供的表达式语言(SpEL)

    7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字 ...

  5. Spring学习笔记--Spring表达式语言SpEL

    Spring3引入了Spring表达式语言(Spring Expression Language,SpEL).SpEL是一种强大的.简洁的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean ...

  6. Spring表达式语言SpEL简单介绍

    Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有非常多特性.比較经常使用的包含: 1.使用bean的id来引用bean, 以下 ...

  7. Spring学习记录(七)---表达式语言-SpEL

    SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用Sp ...

  8. Spring表达式语言SpEL

    Spring表达式语言,简称SpEL,是一个支持运行时查询和操作对象图的强大的表达式语言.语法类似于EL:SpEL使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean属 ...

  9. spring4-2-bean配置-7-Spring表达式语言SpEL

随机推荐

  1. c语言中的位移位操作

    先要了解一下C语言里所有的位运算都是指二进制数的位运算.即使输入的是十进制的数,在内存中也是存储为二进制形式. “<<”用法: 格式是:a<<m,a和m必须是整型表达式,要求m ...

  2. 美国插画家Mike Bear作品欣赏

    Mike Bear,美国插画师兼概念艺术家,在漫画和游戏界从业6年有余,分别为包括Popcap.Rockstar Games.Hasbro.EA等在内的业界巨头创建作品.他的画风较为抽象,大胆想象出一 ...

  3. Web开发——Tomcat的配置

    1.选择Tomcat 1.Apache官网http://apache.org/ 2.Tomcat官网http://tomcat.apache.org/ 3.Tomcat下载地址http://tomca ...

  4. Blend操作入门: 别站在门外偷看,快进来吧!(转)

    来源:http://www.cnblogs.com/hielvis/archive/2010/10/21/1857415.html 有的人认为,Blend主要是用来修改一下颜色,调整一下布局之类的,大 ...

  5. 关于Android 构建

    在简书上面有系列关于Android 的文章,还不错,部分同学可以在开发过程中阅读和学习:www.jianshu.com/collection/3fde3b545a35 关于Android 构建,看到这 ...

  6. 再学C++之C++中的全部关键字

    /*______C++全部关键字___________*/ asm do if return try auto double inline short typedef bool dynamic_cas ...

  7. SG 复习全部 (全部SG 总览)

    1. SQL 基础 进入查缺补漏阶段 2. PL/SQL 进入 practice 阶段 3. Fundamental 1 这部分还是比较重要 architecture 数据库启动与关闭步骤 insta ...

  8. mysql 并发控制

    1.多个线程同时修改数据,存在数据不一致的情况,也就是并发控制的问题.2.mysql提供读锁和写锁,读锁之上可以再加读锁,不能加写锁,而写锁之上不能加任何锁.也就是说,读锁是共享的,写锁是排他的.3. ...

  9. Java中的Swing键盘绑定案例

    package ch12; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * Created by Jiq ...

  10. Round robin

    http://www.computerhope.com/jargon/r/rounrobi.htm Round robin Round robin is a method of distributin ...