标签:spring 表达式语言 spel
Spring 表达式语言 (Spring Expression Language)是Spring 3.0开始引入的,它是一种强大、简洁的装配Bean的方式,能在运行时执行表达式将值(包括引用)注入到Bean。
SpEL的特性包括,
最简单的SpEL就是一个字面值,
使用${}。
如将数字8装配到下面的属性:
<property name="count“ value="#{8}" />
<property name="name" value="#{'ChenZhongPu'}" />使用只要满足单引号双引号间隔就可以,这样也是合法的:
<property name="name" value='#{"ChenZhongPu"}' />
<property name="msg" value=”hello #{5}“ />
SpEL的另一个基本功能是通过ID引用其他Bean,
<property name="son" value="#{tom}"
使用tom的age属性装配,
<span style="font-size:18px;"><property name="son-age" value="#{tom.age}"</span>
当然,age必须有getter方法。
如果tom的类有个方法getBestLovedMoive()返回最喜欢的电影,
<property name="son-movie" value="#{tom.getBestLovedMovie()}" />如果装配的希望是大写字母:
<property name="son-movie" value="#{tom.getBestLovedMovie().toUpperCase()}" />这种情况最怕的就是出现空指针异常,
<property name="son-movie" value="#{tom.getBestLovedMovie()?.toUpperCase()}" />使用?.可以完成null-safe存取。
使用T()运算符可以调用类作用域(静态)的方法和常量。
如:
<property name="pi" value="#{T(java.lang.Math).PI}" />
除了支持+ - * / %,还支持 ^表示乘方算法。
使用起来很简单,如
<property name="test" value="#{tom.age - 18}" />+还可以完成字符串的拼接。
<peoperty name=”fullname" value="#{tom.firstName + ' ' + tom.lastName}" />
比较返回的都是布尔类型。由于 > <在XML里有特殊含义(在XML文件外使用SpEL也是可以的)。其文本类型如下:
使用==或eq是等价的。
有and, or ,not(或!)三种。意思很明了,这里举个例子,
<property name="testlogic" value="#{tom.name == 'czp' and tom.age gt 18}" />
和Java的三元运算符一样。
如:
<property name="ancestor" value="#{tom.age gt 20 ? tom : Jim}" />
<span style="font-size:18px;"><property name="movie" value="#{tom.movie != null ? tom.movie : 'King Of Lion'}" /></span>你可以使用简写方法:
<span style="font-size:18px;"><property name="movie" value="#{tom.movie != null ?: 'King Of Lion'}" /></span>
<property name="validPhone" value="#{tom.phone matches '[0-9]{11}'}" />
标签:spring 表达式语言 spel
原文地址:http://blog.csdn.net/chenloveit/article/details/38819603