Spring表达式语言SpEL
Spring表达式语言,简称SpEL,是一个支持运行时查询和操作对象图的强大的表达式语言。语法类似于EL:SpEL使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL
SpEL为bean属性进行动态赋值提供了便利
通过SpEL可以实现:
- 通过bean的id对bean进行引用
- 调用方法及引用对象中的属性
- 计算表达式的值
- 正则表达式的匹配
如果我们要为基本类型或者String类型赋值,我们也可以用SpEL:
整数:<property name="count" value="#{5}">
科学计数法:<property name="capacity" value="#{1e4}">
String可以使用单引号或者双引号作为字符创的定界符号:
<property name="name" value="#{"Tom"}">或者我们也可以这么写:
<property name="name" value="#{'Tom'}">
布尔类型"<property name="enabled" value="#{false}" >
我们这里只是说可以用,瞅着都知道这个很麻烦(ಥ_ಥ)还不如直接赋值,大家知道有这回事就行。
当然我们也可以拿这玩意引用其他对象:
<property name="myCar" value="#{car}">这里相当于用了ref属性
也可以用来引用其他对象的属性,这种操作我们是无法通过普通操作完成的:
<property name="myCity" value="#{address.city}">
SpEL还可以调用其他方法,还可以链式操作,真的可以骚上天:
<property name="myCity" value="#{address.toString()}">
<property name="myCity" value="#{address.roString().toUpperCase()}">
其他还有很多丰富的其他功能:
- 算数运算符:+、-、*、/、%、^
- 加号还可以用作字符创链接
- 比较运算符<、>、==、<=、>=、lt、gt、eq、le、ge
- 逻辑运算符and、or、not、|
- if-else运算符
- 正则表达式matches
- 调用静态方法或者静态属性T()
可以看出SpEL是块非常庞大的内容,我们需要花很久才能将它真正掌握,这里我就提一些比较常用的功能。
先做一下准备工作,先写一下新的JavaBean:
Car.java
- private String brand;
- private double price;
- //轮胎周长
- private double tyrePerimeter;
Person.java
- private String name;
- //引用address bean 的city属性
- private String city;
- private Car car;
- //根据car的price 确定info
- //car 的price>=3000000:经理
- //否则为白领
- private String info;
Address.java和之前的一样,接下来来写配置文件beans-spel.xml
SpEL赋字面量的值
- <bean id="address" class="com.figsprite.bean.SpEL.Address">
- <property name="city" value="#{'上海'}"/>
- <property name="street" value="#{'陆家嘴'}"/>
- </bean>
SpEL 算法运算符 调用静态属性
- <bean id="car" class="com.figsprite.bean.SpEL.Car">
- <property name="brand" value="奥迪"/>
- <property name="price" value="5000000"/>
- <property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"
- </bean>
SpEL 引用其他对象 引用其他对象属性 if-else
- <bean id="person" class="com.figsprite.bean.SpEL.Person">
- <property name="car" value="#{car}"/>
- <property name="city" value="#{address.city}"/>
- <property name="info" value="#{car.price>3000000?'经理':'白领'}"/>
- <property name="name" value="Tom"/>
- </bean>
这里就存在动态赋值,如info属性,我需要根据car.price的具体值决定info的值
Spring表达式语言SpEL的更多相关文章
- Spring学习笔记--Spring表达式语言SpEL
Spring3引入了Spring表达式语言(Spring Expression Language,SpEL).SpEL是一种强大的.简洁的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean ...
- Spring表达式语言SpEL简单介绍
Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有非常多特性.比較经常使用的包含: 1.使用bean的id来引用bean, 以下 ...
- Spring表达式语言:SpEl
概念: 是一个支持运行时查询和操作的对象图的强大的表达式语言. 语法类似于EL:SpEl使用#{ ...}作为定界符,所有在大括号中的 字符都将被认为是SpEl SpEl为bean的属性进行动态赋值提 ...
- Sping表达式语言--SpEL
Spring表达式语言---SpEL 是一个支持运行时查询和操作对象的强大的表达式语言 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean ...
- Spring ——表达式语言 Spring Expression Language (转载)
目录 SpEL简介与功能特性 一.为什么需要Spring表达式语言 二.SpEL表达式Hello World! 三.SpEL表达式 3.1.文字表达式 3.2.SPEL语言特性 3.2.1.属性 3. ...
- Spring表达式语言 之 5.1 概述 5.2 SpEL基础(拾叁)
5.1 概述 5.1.1 概述 Spring表达式语言全称为"Spring Expression Language",缩写为"SpEL",类似于Struts ...
- 开涛spring3(5.1&5.2) - Spring表达式语言 之 5.1 概述 5.2 SpEL基础
5.1 概述 5.1.1 概述 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行 ...
- 7 -- Spring的基本用法 -- 12... Spring 3.0 提供的表达式语言(SpEL)
7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字 ...
- Spring表达式语言之SpEL
•Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. •语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL ...
随机推荐
- [Go] golang的select多路选择功能
基于select的多路复用:1.解决如果一个channel中没有事件发过来,程序会立即阻塞,无法接收到第二个channel中的事件2.一般每一个case都代表一个通信操作,多个case会选一个能执行的 ...
- Java开发笔记(五十一)多态的发生场景
江湖上传闻,面向对象之所以厉害,是因为它拥有封装.继承与多态三项神技,只要三板斧一出,号令天下谁敢不从.前面费了老大的劲才讲清楚封装和继承,那么多态又是怎样的神乎其神呢?下面先通过一个简单的例子来说明 ...
- DOM编程以及domReady加载的几种方式
1,关于DOM编程 DOM编程主要是对dom树节点进行操作,所以你必须掌握基本的节点类型,如何去获取节点名字以及值(这些相关知识你可以去网上查,这里推荐一个慕课学习网站->https ...
- Spring(二)继承jdbcDaoSupport的方式实现(增删改查)
一 首先创建数据库表和相应的字段,并创建约束 二 建立项目,导入jar包(ioc,aop,dao,数据库驱动,连接池)并且将applicationContext.xml文件放在src下 三 开启组件扫 ...
- 将Dynamics 365中的用户及其角色、角色导出到Excel中
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复240或者20161204可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- Vue2开发大全
参考资料: vuex element qs.js axios.js vue promise 关于ES6的Promise的使用深入理解 vue2 设置网页title的问题 Mint UI websto ...
- Easyui datagrid combobox输入框非法输入判断与事件总结
datagrid combobox输入框非法输入判断与事件总结 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 常见事件 onSelect // 选择下拉列表 ...
- C++ 虹软人脸识别 ArcFace 2.0 Demo
环境配置: 开发环境:Win10 + VS 2013 SDK版本:ArcFace v2.0 OpenCV版本:2.4.9 平台配置: x64.x86下Release.Debug SDK 下载地址:戳这 ...
- Java基础static的探究
static方法就是没有this的方法. 在static方法内部不能调用非静态方法, 但是在非静态的方法中可以调用静态的方法和变量. 而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用stati ...
- Android 开源框架Glide的使用
Glide是一个快速高效的多媒体管理和图像加载的框架,封装了Android平台的多媒体的解码,内存和硬盘缓存等,Glide支持解码.显示视频.图像和GIFs,Glide是基于定制的HttpUrlCon ...