spring学习笔记4——SpEL表达式
来源:互联网 发布:求购信息搜索软件 编辑:程序博客网 时间:2024/05/29 10:10
一、SpEL的特征:
SpEL(Spring Experssion Language)Spring表达式语言,它是一种强大、简洁的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean的属性或构造器参数中。它拥有许多特征,包括:使用bean的ID来引用bean,调用方法和访问对象属性,对值进行算术、关系和逻辑运算,正则表达式匹配,集合操作。
二、 SpEL的基本原理
SpEL的首要目标是通过计算获得某个值,最简单的SpEL求值或许是对字面值、bean的属性或者某个类的常量进行求值。求值时用“#{}”作为定界符。
先来个例子:
首先建一个java项目,并配置application.xml文件(不懂的见spring学习笔记2)
在src目录下创建包tool,并在包下建一Instrument接口,和一Guitar类,Guitar类继承于Instrument接口。代码如下
Instrument接口
Guitar类:
在src目录下创建包tool,并在包下建一Performer接口,和一Singer类,Singer类继承于Performer接口。代码如下
Performer接口:
Singer类:有number(表示第几首歌)、song(歌名)、instrument(演奏的工具)三个属性(设置setter和getter)
这里我们看如何通过SpEL将值注入到singer的各个属性,直接在application.xml中添加bean
此时新建一Test类测试:
运行测试代码,有如下输出
这里可以看出singer类所有的属性都能注入。其中要注意的是,注入字符串需要在#{}中添加单引号‘’,而注入bean时,只需要直接#{}中添加bean的ID即可。当然,出来这些,SpEL的面值还可以是float、boolean。此时我们也可以看出,这些功能不用SpEL我们也可以快速完成。但除了面值,通过SpEL我们还可以使用bean的引用来获取bean的属性
这里,我用新建一个模仿者Copier类来模仿singer所要唱的歌,其Copier代码如下:
修改application.xml
修改Test代码
此时运行Test类,控制台输出:
此时我们通过了bean的引用来获取了bean的属性
除了这些,SpEL还提供了操作类,用T()运算符调用类作用的方法和常量。比如有10首歌,singer歌手随机选择唱第几首
修改application.xml
此时在Text类获取singer Bean并调用perform()方法,执行后就可以随机获取到第几首歌了。
三、在SpEL值上执行操作
从上面的例子,我们可以看出,SpEL支持算术运算。SpEL提供了多种运算符:
其实这些运算符类型跟java并没多大的差别,这里先做个条件运算的例子,模仿者模仿歌手唱歌,如果歌手不唱的或,他就自己唱一首“What Will I Do”。这里只有修改application.xml即可。
注:这里我删掉了<propery name=”song”>
此时在Text类获取copier Bean并调用perform()方法,执行后控制台输出
这里两次调用了singer.getSong()写起来比较繁琐,所以SpEL为我们提供了三元运算符的变体来简化代码:
四、SpEL中筛选集合
这里,我先新建一乐器Piano类
然后在添加一个instrument清单
注:添加util需要添加util的命名空间
此时我们为singer类添加instrument只需如下编码:
在Test类测试,可以发piano被注入到singer中
同样,我们也可以用.properties文件取值
在src下创建Song.properties,里面的值是
在application.xml中定义Util
此时<bean id=”singer”>的属性
这样可以实现按名字取值
除此之外,SpEL还提供了(.?[“查询条件”])用于查找集合成员,同时用(.^[“查询条件”])表示查询第一个符合条件的元素,用(.?[“查询条件”])表示查询最后一个符合条件的元素。而已,SpEL还提供了投影.![“字段名”]来从集合中每个成员选择特定字段放到新的集合中。(这里我也有点乱了,不做例子额)
- spring学习笔记4——SpEL表达式
- spring SpEL表达式学习笔记
- Spring学习笔记----SpEL表达式
- Spring学习笔记----SpEL表达式
- Spring学习笔记----SpEL表达式
- spring学习历程---spel表达式
- spring学习笔记(8)——SpEL
- Spring学习笔记(14)——SpEL
- Beginning Spring学习笔记——第9章 SpEL
- Spring学习笔记之SpEL
- Spring学习笔记之SpEL
- Spring学习笔记之--SpEL
- Spring笔记 - Spring Expression Language (SpEL表达式)
- Spring3表达式语言(SpEL)学习笔记
- Spring3表达式语言(SpEL)学习笔记
- Spring3表达式语言(SpEL)学习笔记
- Spring(23)——SPEL表达式(一)
- Spring(23)——SPEL表达式(二)
- 【Bellman_Ford】poj 1860 Currency Exchange
- 关于指针的一些用法
- Airport Express
- ACM计算几何题目推荐
- python 多线程+gzip压缩 爬虫
- spring学习笔记4——SpEL表达式
- 使用throw抛出异常
- java xml解析 学习笔记(4)——DOM4J
- 在线安装SVN
- 二叉树前序、中序、后序遍历相互求法
- 黑马程序员_java基础之封装
- poj 2352 && hdu 1541 Stars (树状数组)
- To Do List
- Java中利用反射原理拷贝对象