spring实战学习(二)spEL表达式

什么是spEL表达式?

spEL是spring表达式语言,它是一种强大,简介的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean的属性或构造器参数中。

简单来说,以前我们装配Bean不管是值注入,还是其他Bean的引用,都是我们在编写Spring配置文件就确定好了的,而现在我们可以装配运行期才能确定的属性值。

spEL表达式都是用#{}标记的
spEL的字面值表达式,如




//值为string类型时
`

不过这么使用spEL表达式当然是没有意义的,但复杂的spEL都是有简单的构成,理解很有必要。

spEL表达式使用Bean的引用来获取Bean的属性


         

这就可以把tom的hobby注入到我的hobby属性中

当然,spEL表达式不只能调用它的属性还有它的方法
假设songSelector是一个Bean,selectSong是它的方法返回一个song属性

//这就可以将返回的song注入我们的song

//还可以进行链式调用

selectSong()返回null时会出现空指针异常,解决办法如下

这里使用了null-safe存取器,用 ?. 代替 . 会保证左边项不为null,如果返回的是null,则不会调用后面的toUpperCase方法。

用spEL操作类
在spEL表达式中调用类,一般使用T()运算符,它会返回一个类对象。我们可以通过它访问制定类的静态方法和常量。
如下

`//调用类的静态 变量

//调用类的静态方法

spEL上可以使用的运算符

运算符类型 运算符
算术运算 +,-,*,/,%,^
关系运算 <,>,==,<=,>=,lt、gt、eq、le、ge
逻辑运算 and、or、not、
条件运算 ?: (ternary)、?: (Elvis)
正则表达式 matches

spEL操作集合
操作集合是spEL表达式 的一大亮点
我们定义一个类

package com.csii.Person
public class Worker
{
       private String name;
       private String sex;
       private int age;
}

然后我们创建集合


    
    
    

现在我们就能用spEL表达式操作集合

//访问的是第三个人

//通过.?[]运算符完成查询操作
spEL还提供另外两种查询运算符(.^[])和(.$[])分别表示从集合中查询第一个匹配项和最后一个匹配项

投影运算符.![] 先只做了解 它可以将集合中每一个成员特定的属性放入一个新的集合。

你可能感兴趣的:(spring,spEL)