• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
#define wzz
博客园    首页    新随笔    联系   管理    订阅  订阅
spring3表达式语言(SpEL)

使用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]}"/>  

  

 

posted on 2015-08-22 18:24  #define wzz  阅读(420)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3